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 515 0

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
  g+ P; P/ n/ @! T
8 ]% l3 h8 q, ~  E  i

4 A$ x# W0 e$ b: k* z) r& j1 n( hinsert(). B3 d6 x% O9 A0 S4 l. \3 P+ c% m

) _6 n% G$ n9 L) M0 h  f

7 `( d/ C6 P) _& n2 A1 R+ X& Winsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
# B3 t* }; w1 A2 b6 f' s, F3 \% }# m8 E% Z; s2 |

* d1 M3 L: v) ]2 T# ?3 Jiterator insert(pos,elem)       
0 w9 G# _: M! U0 I4 Q在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
* U% b3 c  ~$ d/ s; U9 E( |! X% jiterator insert(pos,n,elem)        ) p$ X# l; I- X( z4 g5 ]6 i' v7 g% ^9 b
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
3 }! _/ N9 s" Q) `7 e- c# ^iterator insert(pos,first,last)         . E* z4 I& V5 S. S
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。! n% F, C) ^) i0 E1 q8 T% O
iterator insert(pos,initlist)        ' V- c9 R& V/ O6 n$ s
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
- Y. _  l0 s) p2 ]& L: E  L' c8 r9 N4 O
9 m3 i7 _) e) m( K
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。& c( @" ~; y7 N; s+ L  x! I  a) h
/ O* U! T5 f2 f% F9 c; u

" K" U; @1 l. L- }; b! u#include <iostream>
2 u" [% k; k$ P+ {" N! h5 T) T#include <vector> ( P9 {1 F/ e! ^# l9 N. P
#include <array> % C: F3 r% v2 A. q8 J# a
using namespace std;9 ^! E3 g* o* o
int main()
* Q6 W* ]) m$ V1 ~{6 G- {- ~; y$ j  q  R9 T( N4 c
    std::vector<int> demo{1,2};
9 `: @5 u3 ^, w, X    //第一种格式用法
. k0 r0 d+ R3 _* ]) C: S    demo.insert(demo.begin() + 1, 3);//{1,3,2}& e& _! A" F! C; C8 ~7 o- B3 G
    //第二种格式用法
+ h4 _) e0 I. l# Z9 y) @' K    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
0 U: w) E& r# I* S' r4 m3 u    //第三种格式用法- \# ]& Q4 T4 |% J9 K# j* `8 I
    std::array<int,3>test{ 7,8,9 };
9 K$ k/ w" |& }+ x9 F    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}0 |3 O, S! [0 z  J
    //第四种格式用法
- q  m% ~5 f5 b% P/ W    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
+ u' z5 n: ]7 c! N; q3 z0 L; @  ' _. m# p; D. p1 o
    return 0;+ X" X' f) [: }1 l2 ]7 s$ z8 _$ D
}2 m  g  C# F" }% m' D
) S" K; Y8 P! x4 k; V+ ?
. A- [. T8 y4 {9 s" b7 E3 T5 I
emplace()
1 f$ n; \9 M0 l, n  @emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。1 Y! @9 l* [6 D3 B; S
& C  Y' T5 V  G5 j4 h
2 |0 m8 g  Z2 M( |% \
该函数的语法格式如下:
4 a+ `: J/ c8 L( L2 R# Uiterator emplace (const_iterator pos, args...);! n4 `& d& q* R$ A6 F( [& X
: \* i; H- j6 ]' u* q# f

! R+ c* f" `: _, X, |4 Y其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。) S/ C5 f$ ?# o) ]* w) }
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
& ^! N' b+ a5 a0 j#include <vector>
9 l; m4 d. n# M) s8 b: \1 X$ M#include <iostream>
$ q6 M  I9 f* L+ Y7 k) I0 [using namespace std;
9 l4 A. v  e& |) `4 {int main()   
% J# Q$ g% W2 S% g; S8 ?* s4 Z{
) T6 m* e+ P# s1 b  G  ]: `6 N    std::vector<int> demo1{1,2};" s$ ^; R) t  K5 C
    //emplace() 每次只能插入一个 int 类型元素; @( {7 G- {. n  i0 c1 N7 _9 M
    demo1.emplace(demo1.begin(), 3);7 h, C( O# d4 F' m! t- z0 y1 z
    return 0;
* G9 f7 h9 u8 I& f9 V}
" ?+ n; ^* ~$ o: }- I! g" D* G9 R' Z& L& C

9 W) E% U4 a9 U" M结果 3 1 2
* {4 D% T: ?7 l, A2 O  }$ l8 _$ u+ e( W& ?% s

, u6 g: A0 b: `0 u: n
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了