PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
( T( R$ r! y" K$ e! @7 V& u  N/ K2 I8 B7 w1 B

+ r  v* U' X& |. V" kinsert()
: S; M" y6 f; x6 N
8 ^/ t5 a; u' o3 ?* a
' c- O! e$ q& k( q) y
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
- A) n1 }( |/ B7 _  j0 [7 K# h# p  b* c& }  a2 ?

, n& D4 G& W2 q5 K  N6 `iterator insert(pos,elem)        7 O: j( u, ]9 U  v  Z% w6 L' F( j
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。6 [0 J9 d7 m$ U0 k
iterator insert(pos,n,elem)       
# _) w7 ~- @$ R在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。; B& d* S1 X3 C. b- r
iterator insert(pos,first,last)         - p7 g! Q- X0 W* q9 w: U. v% |
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
: P* S* x+ s& u: w) t% Titerator insert(pos,initlist)       
% H4 Y% \5 o4 I, q' z在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
3 x. K9 U" `. f( }# y( P5 g- J& b) n$ x' Y3 g

% t( N* }8 y( z; |下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
' A0 \% F- Z3 p
- u0 o: _$ Y8 @& {5 h$ o
5 @1 y% c. f* k. k
#include <iostream>
- m4 q. u+ Y8 p! y9 Z1 j5 l#include <vector>
# x- e: {6 n: W( O#include <array>
; m1 v: S1 Y5 R6 K  i& A, o1 @using namespace std;
1 h1 M0 Z- b! ^0 L& O# J1 u5 oint main()
2 x; c* Z) w; k% r: G, S$ ^* q{' U! T4 a* {1 J0 L
    std::vector<int> demo{1,2};
2 O8 _; c; s! F5 Q1 ~    //第一种格式用法
- T0 t) f/ F7 L' c# }7 C    demo.insert(demo.begin() + 1, 3);//{1,3,2}
- F% f% {9 _" `# k    //第二种格式用法
: x* O. k, A' f8 ]    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}/ [6 h! v9 ~7 W( o$ V0 Q
    //第三种格式用法6 }1 e3 `" o: E! }4 h# |2 j& e
    std::array<int,3>test{ 7,8,9 };- \' q3 b) @' [% A  U3 e- P8 D
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}( Z$ c4 i/ W! Q$ v
    //第四种格式用法) y$ ]4 F& S7 ~; V8 f
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}( E% E( W% k' f
  
- O7 ~* T& }# q' P    return 0;/ O- e9 P" `& O9 Y! p5 k
}
4 Y% O7 B4 b: v
5 c4 \) b6 h$ z# ]5 k+ {

' V" Q/ o7 e, S0 t3 ?1 g4 X. y/ uemplace()2 h1 V, g) y& C% S; w& u
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。' e4 k4 z3 J3 v) \3 D. k$ X
. u3 B) S, C5 x* M  T

& d8 V2 V% K7 ?% _% [- F. f& s3 N# T该函数的语法格式如下:
5 O) P: P& h. X6 b4 ^( U1 R! `0 Diterator emplace (const_iterator pos, args...);
5 ^' G7 B& ~% K# ?5 a' Y1 n4 Y" y% U) Q* i! u! R/ G7 _! l7 Y
2 x; R3 V. _2 H, S: m* N1 @& ?
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。8 W1 O. n7 s0 s3 I' h7 Z8 y: l
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
; O* V$ J; @' Z( ]- N#include <vector>
0 y1 a2 c6 k6 B1 p  O; m#include <iostream># ]2 X* g! A6 I( F- q, a
using namespace std;6 S5 r5 l# F; P9 o! K* F
int main()   6 G4 A- |! S' Q
{* O2 M$ G3 s+ B# A+ c: s  C
    std::vector<int> demo1{1,2};: o! J. c) C: J/ {& k  S! Q" o* L
    //emplace() 每次只能插入一个 int 类型元素3 Z" k$ e! I- I- Q# Z
    demo1.emplace(demo1.begin(), 3);5 @" _: V# I1 s7 E6 A) E' F
    return 0;! D2 l3 P$ L7 ]/ }: j
}( z& T/ B0 {! }: w; i+ D/ `5 Y" c
. l; @7 _! f7 `  i4 b$ s" b& x3 E

0 B' w8 [  l; G# D9 t5 }, V3 ]结果 3 1 2
; h3 v% ^, j* F: g( C- A5 S2 i) p5 ]& @  t7 {' C8 h& Y, q

) C- i% K: m2 f4 |% @1 ^
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了