PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

PLM之家PLMHome-国产软件践行者

[资料] vector容器提供了 insert() 和 emplace() 进行元素的插入用法

[复制链接]

2023-3-11 11:01:23 452 0

admin 发表于 2023-3-11 11:01:23 |阅读模式

admin 楼主

2023-3-11 11:01:23

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数+ t; f! ]) g# g  a

- [# x5 {9 [0 e( Z

$ Y' }, i4 t3 x4 Qinsert()
; k9 F+ C5 @& W4 n4 g( U7 ~- n" B
" M* u# o0 ?. q
4 U8 j5 P0 v  _6 V2 L! o3 N4 D
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
* }& u9 Z4 U  W9 g" [) J2 f6 |5 [7 P4 U, I0 ~4 T! h2 w  M
  ^6 ^, L2 R1 p" \) j# c6 p$ w
iterator insert(pos,elem)       
. g8 \* t' i  a4 ]% {在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
/ H6 \4 E8 Q. }, l9 n% }8 ~; diterator insert(pos,n,elem)       
1 M  M5 H* f/ Q: ^9 ~5 J* h在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。- g  [. t! S1 s8 L
iterator insert(pos,first,last)         % H; |1 j& \- e' {( O+ P1 K
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。5 t6 [% `( L9 T# }  L
iterator insert(pos,initlist)        * Z4 p' d* I: @  S, j; W
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
# g- L- q$ f# k$ {" j) F. b# \1 d. M6 T/ v7 x& j0 F

0 [) `' \) e& v) L下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。6 |- l% J1 o& ^7 V  W. ^/ O9 \

' v1 R: G# ?5 q# [7 L) H) u
+ ?. h) v- C5 p" E/ }
#include <iostream>
) q6 G& @) Q. [9 i% f' U  ]#include <vector>
6 t$ @  p; M' g- X6 v4 o: w' a#include <array> 1 K- {: g4 }8 K' K/ i6 w
using namespace std;
! i& E8 x* E* A2 k' Wint main(); v7 W) P( f6 g& h/ F) k" f
{
5 ^" ]+ ?  R+ O1 d  h, E    std::vector<int> demo{1,2};
; U. y. u5 ]: U+ j; p/ @4 F0 _    //第一种格式用法
: K/ C5 _1 a% G+ _: `4 W  R* P+ t    demo.insert(demo.begin() + 1, 3);//{1,3,2}
0 x- t1 V! M4 {  o. Z. s1 [    //第二种格式用法
# z% `; q! E5 X+ h    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}: w0 F4 R2 u; J" N% Q
    //第三种格式用法
! ]1 Z" d7 i" R    std::array<int,3>test{ 7,8,9 };
9 H* d: p0 t  n    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}3 Z/ Y0 t/ @0 D! q4 a3 k  W
    //第四种格式用法. q( ^9 W. K9 _
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
8 _$ b) u# n4 x$ h) M4 Z  6 R1 c6 P% n% [7 |0 J1 q
    return 0;" Y, B  O0 v- p
}( P7 J7 i& U3 @$ q2 S

5 ~' O. S+ p. J7 {: `% u% M3 K. i

, `( r8 d$ a6 d$ ~4 _, T9 templace()" [7 ^3 `! z9 `6 {3 G$ T
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
8 |  ^# y" c( M( K( k6 W
; X) N* w% r  A, ^

0 P( U$ x4 \' I( G; s/ K; M* S; R" ?该函数的语法格式如下:
; a4 {% M4 S( `! Hiterator emplace (const_iterator pos, args...);
0 s8 p9 {9 C" z6 V  z: K- B7 o) P8 u, {- F5 C0 E

& w3 x$ i3 J& O( @$ ~1 ]$ c5 g其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。: X$ @1 o7 C) U8 q, k
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。8 o8 c2 q& `3 F* S; f
#include <vector>% i. ?/ K) p3 q; f
#include <iostream>3 ^! n5 l5 l  c' T- u( |
using namespace std;
7 n5 e/ k- N+ z" Z6 C; d3 _) e# X# K" Qint main()   
8 b9 ?# [# V! s# d/ t{. b$ _8 z9 L$ F5 d: E- d( M
    std::vector<int> demo1{1,2};# |, K( Q! W1 c$ E9 Z
    //emplace() 每次只能插入一个 int 类型元素. U, v- }4 @- V4 [6 J- ^& s( ~
    demo1.emplace(demo1.begin(), 3);- B9 w* J4 t: }4 O& p6 u
    return 0;9 m% v% h9 r1 v
}3 S7 P. }5 u+ X8 `
# e$ v$ X2 d) p% \  j3 p' a3 J
9 B" H4 N  y1 f+ e& k
结果 3 1 2
8 Y6 z  e; p9 _' T4 I
* f5 C2 H  \( O7 \, U3 }% A  C4 m  u$ n9 }  W2 n
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了