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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数- x; s0 ~' s9 {! {" R$ F, g/ o" a7 P
8 r( [4 {+ u9 W  ^7 m2 B
# Q5 u. ^2 P' n8 S0 j4 Q# T
insert()
  o5 x( [: t% a5 H1 x
4 W6 t( X2 A; _8 N2 q
4 W- ~# d- w% ~' P( E
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
  p  h" C8 `8 {6 }8 ~
1 N) F$ P7 Q: @* H6 k
9 d, \& |, m) s  P/ b( i% x) M
iterator insert(pos,elem)        ! I& ?0 H: a) \
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。3 m6 U$ R& v0 A) h
iterator insert(pos,n,elem)       
( d% s' {- ?6 S在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
( _7 M& J* J. q( B9 O- t% Y, g: ]iterator insert(pos,first,last)        
) L1 Q, W6 k2 U3 \& @+ X7 a在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
" |8 i6 \0 E, ?5 a4 _0 y5 xiterator insert(pos,initlist)       
- x+ y8 S& o0 A9 X6 a在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。# Y2 }7 g3 S6 ~7 @

0 @8 a7 w% F( _5 i* o

* G9 ~! s# I+ n% K$ q- F; K# V; b下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。' J$ D5 u: _5 Q& `' T" w. d

* i3 t! o4 Q3 |

  |0 d* i% A3 J, [; C#include <iostream>
; T2 G# y# e, A; s#include <vector>   ]- ?: z! W- O- z: f( c+ ~% w% w* C
#include <array> ; _0 B; f" u$ s' c! l. R' {
using namespace std;. O1 T+ y% \! a5 n3 C( q
int main()4 @2 A/ D+ P5 n( e2 }3 _
{4 \& t. _# A3 K3 I$ L/ a
    std::vector<int> demo{1,2};, I0 _" n6 n* p7 n% }  V! J: a- q( r
    //第一种格式用法: e- P5 h- X+ |
    demo.insert(demo.begin() + 1, 3);//{1,3,2}" b! ]( w, ]: @7 \+ f( r+ T
    //第二种格式用法1 M: q1 ^7 @) P( r. M8 ]- M* K
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}0 n: {' l3 ]! z
    //第三种格式用法& ~- {# t  b0 D3 H
    std::array<int,3>test{ 7,8,9 };
0 X' O, P2 e( z3 p    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
6 M6 B2 s* N# w; ~( s    //第四种格式用法# c" @; d! ^, s* n/ o/ O% g4 V
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
+ @$ I- D7 h* ~4 W: {$ o, i/ P  ' X, D+ m  _7 b! L; H" L* _3 }
    return 0;1 w/ k" Y& ?5 j6 O4 E
}
# v, v, n% F- }
( L' \' c8 e! b# p

. o0 ~/ l$ i2 c( ]- iemplace()& ^: c; |6 j& V0 i5 U0 c
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。, ]5 i# Y3 {  a+ T
# Q2 c- `* H+ A

. r; b; o+ @. e8 I7 }: d该函数的语法格式如下:- J3 g4 X) L. j! P4 I  g6 H, ?
iterator emplace (const_iterator pos, args...);! Y5 B" }, J7 d1 v: ]3 K" p

6 Q" y6 z; s; R; S. A2 I
% R7 w2 j0 V- n3 K* w2 m( O
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。( Y# E2 s) X& e4 D" D
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。' y, m/ }' l+ p0 |8 B2 g4 z
#include <vector>
) }9 Q' n$ B* b( p& I/ m/ D( Q: Y0 T) A#include <iostream>
0 X/ F" `  N" R: C+ `2 zusing namespace std;
' |6 _" e% C; @: y! l8 d+ {int main()   ; t: I4 n: N. B* T( b
{
/ s, z- ^- E8 x    std::vector<int> demo1{1,2};9 z' y* K2 T: N* w! ]
    //emplace() 每次只能插入一个 int 类型元素& f* E9 [3 J5 L* K3 v4 y; l3 Z
    demo1.emplace(demo1.begin(), 3);
* P/ o. E8 P6 z! e6 U; {    return 0;
9 D  O& Z# D/ ^$ H+ Y5 _}
- g# H# G0 v: H" V9 E) c- l6 n2 T  I( I7 _4 b" }$ @6 R2 p

7 o$ x+ z. @( \5 y2 v结果 3 1 2 ; ]4 V4 N4 B3 b5 j- ?! B7 t1 [4 y
. Z; n1 I4 y) Q/ ~/ C

) U6 I2 [; o: O7 G  t! {4 z
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

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

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

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

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

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

    我知道了