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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
2 H/ P4 {; H* t( z
7 O) D% T: f" ?  e
' n" d+ a+ J3 L5 K
insert()
$ U. }  ?+ A$ }, O
0 R* c$ m' v7 P
( B* N  D3 [, L' A* h
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
5 \( X- B1 |0 D0 o* M/ Z
$ K4 b- t+ v! h( r0 j

5 w4 x& `1 H4 u, J' I: Z6 ?iterator insert(pos,elem)        ; U  ^! b0 y2 g- t8 b3 ?
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。, a  x4 c( d9 K; U0 g
iterator insert(pos,n,elem)       
6 u0 {1 s7 A# R/ d在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
1 M% m& y/ ]/ D6 ]/ c/ ~' v- Y# ?: jiterator insert(pos,first,last)         & E5 F( D5 N/ T. M$ I- N
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。+ z% m1 {8 ~% z+ o0 `$ @
iterator insert(pos,initlist)       
; w$ L2 T- W* o  l在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。4 f+ h, C- D9 z( q% n

# A8 v9 @; i: a  n

! M4 X$ y0 x& S# }/ q0 {下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
/ \& O- r& @, w8 V) [/ c# E9 b2 X6 f; \7 [5 _$ G3 v0 |
+ Q+ k% w, G* j: v/ r
#include <iostream>
" a; I" c3 P, k% L#include <vector>
  `' C, y9 @, h% s2 V#include <array>
- c/ U1 W! U( R3 G" _using namespace std;
/ ~' w- J* Q% I9 K% Xint main()$ @9 |' l) D# N6 u; ]
{
1 c. \- e3 z7 k6 G  z    std::vector<int> demo{1,2};# X6 S& w, n: w6 c$ p' w6 }! x) W  |
    //第一种格式用法
+ I( Y6 x+ u* n  ~5 O    demo.insert(demo.begin() + 1, 3);//{1,3,2}$ k, m; u. y8 e7 @" L8 `$ H
    //第二种格式用法( F2 \8 h, {7 |# b# i2 [
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
, L8 f7 w5 V* a- B* m. |# {    //第三种格式用法% c1 f; `( l" J) V
    std::array<int,3>test{ 7,8,9 };& s: u2 a5 J, N" Z1 T7 _  S# c$ F( X
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
4 r/ J+ q6 ]8 m- S7 G1 {    //第四种格式用法
& u- c! {2 L6 v( w+ ]) F    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}3 h) w- p4 f- F* Y4 @. V, z3 y
  ; k* a$ m0 T% J; z" f0 M7 c
    return 0;: y, R. Z1 @7 G, q
}
& R3 ]$ p: R3 z3 D% Z2 n- v' s* u# _

4 y$ j) R0 ^, i, i) F, qemplace(); G# y9 V: O/ I7 {8 s' Q
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
1 q8 H( s8 _1 f3 N
3 e, j* b6 m& \0 g
/ J( Y9 H) L& _0 J" A
该函数的语法格式如下:' J* o* \8 D( ?
iterator emplace (const_iterator pos, args...);9 l$ n* ]4 t6 [

! c7 @1 u+ t$ [, D  _

1 f: _" v) E9 x其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
1 U. E$ [# o$ T6 ^简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
" v, i0 P5 G( R7 ^1 ]6 i#include <vector>8 z! |* l  ]+ {0 t; z$ |
#include <iostream>
' ^+ q6 I4 O2 M$ Ousing namespace std;9 W, J( l# L# h1 F9 @
int main()   7 K, j# m* h" T: z
{
* f& Z4 D" o9 V% m% h0 ^% Y    std::vector<int> demo1{1,2};
9 p$ ^6 A0 M8 p2 \' f, M    //emplace() 每次只能插入一个 int 类型元素$ d/ |( k( I' r- t9 ~3 @% N
    demo1.emplace(demo1.begin(), 3);+ r8 Z% V! }0 Q6 C" x
    return 0;$ ~. ^% T. S1 j6 d5 P5 A
}1 l7 t9 V1 }  h% G
. [* Z6 X: ]# b" _

3 g. ?0 W8 b! V; A结果 3 1 2
6 b, z3 Z' f% Y/ w2 }
( P6 w! E1 A6 J% d2 E  v* k
" m, r! g3 M7 C( f) ^4 X8 k& q1 n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了