PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
" y- h7 I' I3 I, Y
, W$ T$ v2 Y5 c- I3 \  K
' u2 D+ A5 c: q- s5 w
insert()
8 d' ^$ `4 M3 I/ n- n4 G7 G6 e$ r" Q0 g( q* i7 D' h  q

' I1 _+ \" H! B8 h  _  g) `insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。$ `8 V) |3 [. P( _# f: e

0 k1 N% G1 b) ]4 M: \! t
% h: V5 F, h2 r4 S2 y0 C
iterator insert(pos,elem)        0 C# H# L7 T" D" A& C
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。' H0 y- Z+ U: m9 j: `5 b
iterator insert(pos,n,elem)        6 f7 M( E# O/ a1 c8 U  C6 N
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。+ Q* f& X, k, g6 h0 g9 J
iterator insert(pos,first,last)        
  y& T8 s# Q" J; \$ p7 M9 I4 S( h在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。0 j! Z0 }' H. {, ^+ }0 u5 F: U% r
iterator insert(pos,initlist)       
4 X$ P) v% D9 }' G; ~在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
. \1 F. z# z- s% `4 ?# S, N5 Q0 C2 ~; v! R$ c( @

5 D5 V3 Z6 X, S& n下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
  C; _) k9 n% ?& C8 |6 p. c6 D, g( H5 j, E

4 G& }4 l" c1 I#include <iostream> ' Q& F: w2 j/ y5 o; I  W5 V1 n3 K. _8 r
#include <vector>
$ o6 @% S) Z& e+ [, z#include <array> , s+ d* h; `" I  \
using namespace std;
, E, s' `7 I; c' }" r' [+ P. rint main()5 X2 G# P5 o% }3 x$ ?) y
{/ B5 B; ]8 c9 B; d8 @- W2 F
    std::vector<int> demo{1,2};
3 K" q% m2 l8 O9 _2 r    //第一种格式用法
9 b0 G, d, B% G+ _9 k" C    demo.insert(demo.begin() + 1, 3);//{1,3,2}
% g  _/ r' a! L; S  x! o    //第二种格式用法
: }' Z4 o0 s3 X0 ~9 F, C4 ^    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}0 p. Q" y) {- e
    //第三种格式用法: }, Y1 i$ _6 T" L
    std::array<int,3>test{ 7,8,9 };  K% ?: O# ^4 G5 l1 C
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}" x6 C2 E& e) K
    //第四种格式用法* W( |% s# R) @
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
- l2 F+ t* f7 B8 R6 |& K$ g  3 C# q" L' d2 N" g4 w
    return 0;
, u5 b2 V( N2 Q& Q+ K! ?}5 r8 I# A- w0 t4 \
8 [/ F4 }, U- O# {& x2 Q
2 }% M. i6 I0 ^- F
emplace()" _( s. h2 S' r2 d* \( p" X
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
( C0 L' w  u1 S9 O+ w
5 w& A) r+ f" s# c. e
) ^3 F! ~0 K( q% |- ~. C
该函数的语法格式如下:6 _) m" J' F1 d* K0 J% l
iterator emplace (const_iterator pos, args...);  S2 E) |: ]4 m
2 A- x* A4 i" t& U& ~9 m

  a$ J* f0 b: T. j) u7 L* t  M4 Z- N其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。8 R% k7 V! h5 e
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
* J2 j) u# o% D. D" @# ^5 Y0 j" [: Y#include <vector>3 `5 r# d7 t& {3 p* F( c" T
#include <iostream>( w+ J1 X$ G) x6 ]- p. `2 E( |
using namespace std;. ~& B/ ?2 `& L6 E( T
int main()   
( h7 q6 @; L1 A' y5 r+ \; C# i" Z{  m9 w, A0 K" P, W* ?
    std::vector<int> demo1{1,2};
7 ?/ X8 Y. c& ~1 m# |    //emplace() 每次只能插入一个 int 类型元素
( Q* Y9 `* D# S+ h* y% K9 R( N    demo1.emplace(demo1.begin(), 3);
2 `1 w  R# D2 [& n, D- E    return 0;3 H% \  \# m7 Q4 O" K* j9 \% n7 X
}/ c! @' g6 ?* z
& P# ?0 H; k# l

1 {2 l3 X6 L% S3 d$ x3 z9 r结果 3 1 2 ; u+ B0 i& O, `1 t9 P! c3 R

2 r  {8 b  Z; J6 }2 C0 E$ Q7 T/ R: B- L
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了