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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
  r& Y0 _/ Z4 A! j7 e+ z. g4 n# ^' x5 c  ], J8 ^1 N) V) F; i5 R" j
, j6 u! Q1 S' G4 d* t! L0 a
insert()
" a. e( z  r* i- k# R% N7 Q9 y
6 T6 _: I' i/ c4 ]  P

3 l( r& I/ a( h8 finsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
0 ]$ m8 l/ g( T* G# C9 k5 E' t; Z9 `5 T  A7 S+ {6 E
) Q& S7 _: K7 X1 ~0 Q. F7 U, h
iterator insert(pos,elem)        * x1 ]$ P. N& e: U
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
# @- h; _, P( Riterator insert(pos,n,elem)       
4 d9 L3 R8 [4 f; k" m: `在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。. C' b, {0 m* M: |
iterator insert(pos,first,last)         - Q& Q. \& U" X
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。1 |3 x; D$ @+ X, x1 r2 {0 F, b' s: w
iterator insert(pos,initlist)        5 D! @, R0 T% Y
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。' F2 F/ |+ ~/ E
0 x& O/ K# j3 G) |3 K
3 Y  Z  y) H. |* W$ w/ K
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。$ t  z3 e& P, Y, F: B' p
; ^5 N3 ?9 Z+ A: r5 H1 o

' |/ Y- |! l) x0 P#include <iostream>
! L% A' K7 g: b3 c+ W6 a#include <vector> , |2 r1 s' v' `2 P+ R7 _. R- {# O% ^
#include <array> 1 a6 y  R# k7 H  i) T2 h4 l
using namespace std;9 e% i  a* o( b* r$ B& B( _8 H
int main()
% A- B4 S( S+ c+ ~* P{% v* Q8 h6 R. @6 @4 f0 J% h
    std::vector<int> demo{1,2};
0 N4 I2 d2 l# N0 t    //第一种格式用法& w; Q0 m: Z: z) a
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
: D3 a% R6 |' _4 ]( V$ i' Y    //第二种格式用法
) K; E+ z* f" ?8 t    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
+ Q: Z& i# i5 X) C( y& Y6 V! k% P1 O    //第三种格式用法
0 A5 u! ^  v, k3 ~& T& D( [/ m( p    std::array<int,3>test{ 7,8,9 };
( y+ S* K* z. `' Y    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
8 a* W( c+ w+ ]% D$ d" s/ t    //第四种格式用法0 P1 u9 T% Z& h! D, ~- t
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
# j9 c; b) V- ?  
2 g6 ?  O. R0 X" L+ c( E    return 0;
1 }9 z2 C0 ]- T% ~. n0 U4 P}
0 F+ g7 A% k/ d, R( I8 a( H
3 ]% x/ P* d+ O6 M
6 T4 B6 w0 X/ Q  j
emplace()
( c4 ~* [6 W/ ~. C. T' T3 }+ Oemplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。- n, I" G2 F6 Z& w

6 A) ]( r. z& c

$ k: D  `  |2 |0 O该函数的语法格式如下:
5 j, v* Q4 j, I" a, M. S6 Eiterator emplace (const_iterator pos, args...);
3 u! L9 b! g9 s0 O* }* P/ B( M. Y+ p/ m) p) P- n2 E3 O% P6 j

; }& }/ D  U5 A" A- J其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。8 z8 N% l4 P. f- D
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。7 w( J! _  G% f. A7 i: N
#include <vector>
; X- T$ J; {# \" J#include <iostream>
6 q9 C2 l$ I& b5 ^using namespace std;
" f* R, a& i: _' S5 n. J% l0 {6 Xint main()   
9 y9 `& F$ A5 L- `{
) n- Z/ L0 p# u9 a  {    std::vector<int> demo1{1,2};
+ Q  K/ N" u) ^' a    //emplace() 每次只能插入一个 int 类型元素
/ ~% c: u* }6 C4 I/ c2 w7 X    demo1.emplace(demo1.begin(), 3);
$ X; W' t8 l( k: J: z% Y7 G5 z    return 0;+ T+ G0 W% o# [0 o) {
}$ W! ?+ b) \% ^. @

0 y" _0 B/ }, G3 p/ I
  C  m9 V! ~  M" \
结果 3 1 2 ' T. m  T3 C+ P) {( S6 u2 P

& p+ o/ g% f  z! {8 d9 N/ P
% {2 ?0 u+ K: ]$ u
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了