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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
  S) x* a3 `4 g
! P% R) r( ]5 W4 L4 i
( x! f6 z# I. F0 V2 }! _
insert()
4 T+ I$ c9 s( w$ ^, ]1 m, {/ @! E' @1 s5 b' T7 q
8 X9 s% j1 j" \
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
# u& B) w# j) r8 m0 \( l* J
7 N9 G8 j% ^: H, `0 K
2 {/ L3 B) o' I! h- i# z1 A
iterator insert(pos,elem)       
3 n' Y; h  g! J8 N2 O" v$ _1 S- J9 I在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
( z! k! q8 {2 X0 w3 @iterator insert(pos,n,elem)        3 X8 z# ~; B  k% o- C- }. G
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。% O6 q; c) j1 M" Y8 b* U4 g
iterator insert(pos,first,last)         " E4 A' `$ E, ?' ~8 f" G. I( F$ {
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
6 l' m* f2 G/ C: h3 h2 T" ^! s" jiterator insert(pos,initlist)          n0 S* c: n8 A+ x4 \
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
( m/ w* }; h. l4 n  ?9 Q* D. s, `1 \7 M5 @. a7 T& A7 ^$ M, o$ U

. Z$ c$ `. O7 q& N# o. V下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。2 N( g  U- u/ h
: J6 n  j! Q& t/ h+ U3 ?1 B! Y& V

8 K& ^6 V, i0 L! F' n. r#include <iostream> 3 O& k6 v  U; e9 ^9 e! r; w% t! u& h
#include <vector> ( e+ |3 T. E- n+ v0 A( U: m
#include <array>
/ d3 B! A0 X, p- wusing namespace std;
/ j' ]4 V4 f7 D3 c1 G% T, _int main()
/ K% E6 @  W1 M3 w. x  X{
6 p; i, }- P: Y: E1 l+ o    std::vector<int> demo{1,2};( x' j* Y6 s8 B- B. u; Z# C* Y( v
    //第一种格式用法6 J& k0 P, B' R7 F2 m: O
    demo.insert(demo.begin() + 1, 3);//{1,3,2}3 `2 ?" x; d7 d( u8 H& r% f' a
    //第二种格式用法% B7 }& h( b. C5 v  V5 M* p, V  v
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}; z5 Z5 }/ W" d( m$ `7 ~$ e
    //第三种格式用法0 c) O( i9 E  x: X
    std::array<int,3>test{ 7,8,9 };
' g1 |2 W8 c8 S# _    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
1 e1 c. K8 Q0 C" Z9 @5 y4 i    //第四种格式用法/ O5 k, n: c" e4 c; Q
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
( Q3 h- q) F3 k+ O* S: ?; n  0 x/ U. }; d4 S- n$ g6 H  u3 B
    return 0;
: ?. J3 ?6 p" _/ x2 L- X( B4 E0 Q}
( H# c) m; O# C. J# B: D/ k+ n6 B& X! R4 b" d/ ]: Z3 I

: O' @7 r8 W+ [$ \7 kemplace()
. \) j' g4 _- [* h  Iemplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
- r8 J2 |4 V, |. w* e/ T: G9 d( S
2 V: r1 i2 `( U1 k, Z* P# @7 x: |
0 N2 u6 U6 ^; r- D% X
该函数的语法格式如下:
5 z/ A* X' X. B9 T" siterator emplace (const_iterator pos, args...);% o1 ?$ i' L  q5 `4 a
2 _% U2 s1 N8 E2 F0 T3 B. n

1 _7 J; [$ }- q0 v4 c3 u9 l/ J其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。5 c* B0 b6 a( z* J
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
3 g0 f+ R$ \1 N4 P6 \6 L#include <vector>9 z' g7 I( h0 o. k+ B. A
#include <iostream>" a$ J! w. h! @- z9 Q
using namespace std;
1 v& x  N. t) K1 V- F  o! i! aint main()   
! x. o2 ?' _0 W( J. M$ S( X{, N6 R6 u* G" Y' }7 H; ^  m, h
    std::vector<int> demo1{1,2};! m5 O9 E" Z8 V5 j- {
    //emplace() 每次只能插入一个 int 类型元素
2 }6 C* j" ~/ Q& w: g7 l, R3 [2 w    demo1.emplace(demo1.begin(), 3);
- \, S. D- j3 ?) \6 E    return 0;+ P! Y5 v7 {1 b
}
8 H! ^& r4 d$ U- q) k6 [5 D5 g. b) b
4 f. K1 O, l, O; O0 P
结果 3 1 2
: o! I- w7 y5 u' `! d4 G' x  G. x7 _+ E, w
( L, D0 x/ n3 @
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了