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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数3 v# Y$ q& l! n4 {) s8 n+ C+ e) p' d  ?
, T% a) [& m: m

6 v, q9 n! a6 ?. Oinsert()" n7 {0 P; \! B+ M" y4 o$ T1 O
, w* F+ I8 ~# N  [& P
" x& N. e5 a2 ^3 W7 S  }
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
1 w0 S# p/ v* L& W7 U2 ?
! ~% S8 R- }- C: o3 C7 z
4 }! x% V% ^; H" H* V+ f' o5 Z  |
iterator insert(pos,elem)       
7 E8 ?2 q( |5 ^. A+ f" b! s. k1 q在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。) v0 v# Z6 X) z) C. h
iterator insert(pos,n,elem)        / u/ k% x/ Q$ b7 G3 C- j- p
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。1 t( Y( O  v& e2 L( |
iterator insert(pos,first,last)        
& j3 g0 j3 o9 Y- D: a8 B在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
6 S( o2 K/ S( E# l8 niterator insert(pos,initlist)       
. k* |) p2 w8 D在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。& n" w5 I% V, p1 h" Y/ c; I
6 E" Z5 S* j7 Y$ b2 L7 O
1 e5 o* K' b, A2 |- Y& P1 A7 O% y
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
" t# [5 n; `1 M6 [/ _! y5 g7 D1 l: \7 R2 T$ n' \( _
, U/ b) c' i4 D, }' g
#include <iostream> 9 {* W0 W4 W& H" m
#include <vector>
% L6 C' f4 T5 N# @# I#include <array> . l4 ~1 H: W. A4 A. {
using namespace std;
1 p) l3 B) @1 i  T8 p6 cint main(); i7 G* J! T1 b6 H. m
{3 j$ ~7 i! u9 n
    std::vector<int> demo{1,2};' f/ d9 e# Z1 s! M
    //第一种格式用法" g0 o# X: q! e
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
3 k; k: {/ v1 }$ j' P2 L: J    //第二种格式用法
$ P1 x) z9 v& U$ H9 s+ {6 j    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}6 f" m7 I9 ~# N# k
    //第三种格式用法5 u  R3 K! {2 y( `+ f5 V0 h' w. V
    std::array<int,3>test{ 7,8,9 };0 ~$ K3 O% p+ l% o
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}! I; y3 h( O. |' \- H& S/ [3 D
    //第四种格式用法! H" G. W. E2 H+ p4 P0 ?3 V8 c
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}/ J7 ]4 t6 z! L, N4 @0 A& K, R
  / y! d- M$ R% o2 v- n" S  D
    return 0;
1 n0 r* R$ o1 J# F- X}
1 V! m+ A- Y! Y2 t# `* \' A2 Z( O8 n
0 K/ S3 y" E, Z
- ]) ~4 `) A8 y' E+ |$ U7 K
emplace()) O1 R1 E- U2 @9 U! X# u% g$ F
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。, d( m0 k5 _6 N+ V9 n) Z( f* R+ L
& e; y; l. K9 _; o

& x& R5 {+ G1 W9 ]1 l该函数的语法格式如下:
% C4 I+ ~& @% o: h, i. q$ }iterator emplace (const_iterator pos, args...);
" F$ C5 `; s4 f0 ^- J7 }0 [4 w; a0 O9 v+ ]3 m
- b! H2 y/ P+ K1 L( D) M
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
) F' K# D2 Q; w! M( u简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
) h: s9 q  P; d" H#include <vector>
  o* C% Y  W, l0 `/ z; D#include <iostream>( W. J9 a8 I, {: C
using namespace std;
- L1 Y3 L$ I+ A4 @- q9 ]int main()   
: K* C7 o5 Z4 v{
" d  }0 a! d* t2 v' G  d    std::vector<int> demo1{1,2};
# k9 [) I' p* Q' q" o) z: g    //emplace() 每次只能插入一个 int 类型元素
2 ^  D" ?- G) Q    demo1.emplace(demo1.begin(), 3);- y- l8 S2 i$ Z& w
    return 0;
0 ~2 y0 G* }' y) |% x3 g2 v% U}& Z+ I3 @# U, @9 c% T% W5 H" Z' s
; e6 w0 H3 R0 y

# R: i# @  O7 J; s2 S2 x5 J7 A% A结果 3 1 2 5 K0 J) S6 W8 Y2 \
& V( c4 I8 R5 m. Q' M$ _2 s
( m7 \: D" @/ v. y+ ^1 M* u4 @
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了