PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数: `4 Q# V% M! q. Z1 q! O: O

9 \( o4 U3 C7 V- G: s3 C) W
8 p5 U4 `5 |  G7 d! w
insert()
" F+ k! ~( b% D: _! F: {1 @
5 w2 w) H3 J0 Q
+ n+ Q, r8 G% r: U6 M
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。) o) F' ^/ V8 f7 s1 X

9 U5 Z9 _5 ^" A  z* G2 P6 l8 v

2 @$ U. X$ z7 w3 i# \' M' q9 U, Kiterator insert(pos,elem)        6 N3 V! u0 x/ H/ N2 H5 L1 P; s
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。8 L( O# O" p& H
iterator insert(pos,n,elem)        # B& ^1 y, v+ ^# o& t# {: N
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
' Y* f/ j. p8 Z5 C( m# E  H! ^iterator insert(pos,first,last)        
, Z3 B1 o" e# D8 G7 l* X+ _* t在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。) }: |; h3 T/ V6 V; h4 I
iterator insert(pos,initlist)       
- D1 v+ t) g& N在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
0 ?/ p6 B" p* K0 x2 t0 x2 A2 q0 b" ^% n

$ n. v9 Y1 u4 N+ V+ M: j2 N. k下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
" O, d/ j0 h5 O' n% s" A) ^9 [- y! I2 s4 M- T6 S5 R) R6 _

- l" ^# L, i- t+ u: Y#include <iostream>
. q& O5 j9 |' J#include <vector>
' ~9 S6 d+ g! u3 m9 ^( Y#include <array> 6 X$ ?( @: S+ V6 O8 l
using namespace std;
& [9 p1 e& S5 S4 U" Z% pint main()
6 \0 E. {+ j  ]/ z3 j' h5 e{
; Z' Z* {% ]1 y3 S  d/ ^% A1 c7 y' c    std::vector<int> demo{1,2};
+ k9 a+ {9 t1 I% e    //第一种格式用法
3 J, A6 d$ i2 z$ @2 J0 j    demo.insert(demo.begin() + 1, 3);//{1,3,2}2 Y' d5 L) {, w9 N5 E5 M+ W0 |
    //第二种格式用法
, v, X& _8 a! ]  V+ S/ ?1 M3 T    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
  R: m* \" q2 \# V    //第三种格式用法
$ _6 d/ s9 k& t4 G    std::array<int,3>test{ 7,8,9 };! B4 _& r' x4 C9 J0 N3 ]
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
: t% E  b) T! N2 u    //第四种格式用法
* o( Q. ^' O( G0 z7 m$ A/ I: h% t# Q    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
$ k" y5 c2 m, J9 U: |  
' r1 C+ b0 g8 l- \/ ?% I# t    return 0;
3 y9 ]* y$ d9 Q0 j2 R}& \$ o* E+ ~+ X- Z" s
& ?5 a% ]+ O8 u4 \# z) T

. k$ G8 G" T- C3 D! `9 d, qemplace()4 R$ c' u9 |/ h
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
- V2 R9 l: C+ K6 W4 u9 ?' ~
+ V9 o2 C" G. n, r

8 ~  J; D  d& q, e0 E' S  D: t4 P该函数的语法格式如下:7 e6 b4 e5 N: |" F1 J9 N/ A
iterator emplace (const_iterator pos, args...);+ E- c6 i! M* m$ M/ S4 G  u. I5 N

9 q6 q  J* g1 E! l

" h4 ?* b7 B& }& X# U其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。9 @$ E% }# e7 L' G  t
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
5 p/ A) r) Z2 ]" X- S/ e$ N* j#include <vector>
* Z( L: h+ [' }#include <iostream>$ T/ i  d5 u) H6 N3 }$ I) z
using namespace std;
, {3 Y; T+ I. O: g' V3 @int main()   
. `: t" x+ o" _4 s  q" T{
* k6 D/ T; p6 k3 }    std::vector<int> demo1{1,2};
) p- J- P- O' F! H/ c5 w! t5 w    //emplace() 每次只能插入一个 int 类型元素. h- c. h# u; W
    demo1.emplace(demo1.begin(), 3);
" K0 E& Z* G) D    return 0;; R$ A8 r7 H7 Y9 ?3 W% I9 l' q& v
}/ p2 k  C/ i1 T4 b/ i$ C
/ n3 c% `7 P: `) X4 h2 w

# l) P- x* Y( a结果 3 1 2 ) H  Z# F  t% q) p
: {9 C6 m4 u- {! K
' C: K9 T( d6 {/ E" B
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了