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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数' L4 ^% s* j8 |1 U. M8 S
7 j; ~, I  G& c
& d% v' ]; l! j, \4 [* M, A: ]
insert()& p% o3 p' U) [0 O/ H
* n6 c4 t* ^; b
% j( F9 f. n0 F0 m" e
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
: H& d/ v+ P# P% O8 x( u9 l# N/ W% ^! T) [

( W2 Y$ B& u+ }% k5 f& l; M9 citerator insert(pos,elem)        5 s: |: F3 p1 l- U6 @8 ^0 U
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
$ k5 w& w3 ]4 Piterator insert(pos,n,elem)       
; s8 }6 M$ t6 F: Y5 C; {- W$ f, p在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
7 b& Q& L/ w8 L3 T% v8 diterator insert(pos,first,last)        
% Q& ~( E+ l; j/ k& J8 L- {在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。) m0 s4 V& ?7 r( f
iterator insert(pos,initlist)       
- F( p# a: Z: R: J1 h在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
9 l' y' U' N: |% w+ W7 l2 `/ _* D( x

- P* q; D2 V4 P2 {下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。5 W; N9 d) B: U- ?. g% ?/ J
2 B" b% |- B. S
% a2 k# q+ u9 J# c$ G8 q" D# o
#include <iostream> 5 f! w2 I  G8 D% F2 n
#include <vector>
5 F* G) y9 N6 j+ @) P+ T. h' z, [! G#include <array>
; _* \0 b( g3 U  L; A2 q- dusing namespace std;1 D7 e0 Z' }) ^  @0 s
int main()
) ]& }1 e" [* e" j8 }7 b{
# M# z. v) i: f& _    std::vector<int> demo{1,2};
! ], t1 U0 ]; @- \7 i    //第一种格式用法
  n* M( \! e2 {6 I" C3 {5 G0 o    demo.insert(demo.begin() + 1, 3);//{1,3,2}. b. j8 Z2 I2 ]; ~* m$ R- r) M2 J3 ~
    //第二种格式用法: T, h+ o" |- W1 a
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}: Q4 t& B4 Y+ @
    //第三种格式用法, A9 z4 R# j5 ^9 Y% G8 U
    std::array<int,3>test{ 7,8,9 };
) S$ }# C: ?- S) p7 t- A    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}. E! _9 M/ q+ n, _- o2 O
    //第四种格式用法# U: }. I! U. ?  B9 L* F5 E, W
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}3 n/ m9 z( l# z
    U7 d+ }) [5 e0 u7 g5 L7 _0 b
    return 0;, J$ u# C; B7 E
}
6 R  y. q- }( y* X7 ^# M& p4 d7 ?: X8 v. Y$ F* l6 a/ M+ \; j3 z

' q; R/ K9 {4 _9 @! R8 ]8 xemplace()
, U6 f$ i, Q, P2 W8 ~% T& q( xemplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
; |0 @6 t" [; R  z1 T& z5 p" x; U. M8 c& b# F) Y8 {, v
7 T8 B* p* Z, m8 I  `6 k
该函数的语法格式如下:: y2 o! o* }6 i/ q* [; f# H
iterator emplace (const_iterator pos, args...);, y" |+ W5 z% b% l- C

% w. |  M2 A4 Y" O

; \8 S7 ~1 @! N; ~" H( U其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。1 s* D/ L9 i# l/ _( L  d
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。* _! B. S4 n: T6 `9 z: X9 U# m
#include <vector>2 L; I4 E6 y& D) p  w$ v, w' m* c
#include <iostream>
0 Y, y5 y. l) w- rusing namespace std;$ [& H- d0 S# [5 Z& g
int main()     w) [$ y" P2 a# o' o, ?
{" [, s" T( |& ~! ~* D
    std::vector<int> demo1{1,2};0 t, u! A! G+ s: M$ \1 s
    //emplace() 每次只能插入一个 int 类型元素
  r+ G" i1 V0 x! d    demo1.emplace(demo1.begin(), 3);
& g4 n% x6 f2 ~4 v; S1 f& T    return 0;, r6 r  p* `* |1 W
}
4 s# n' g4 C! C6 n$ x' p% k7 U! I! S0 b$ Y0 e9 {9 O7 H  ]
0 j$ a; a3 Q% f& T
结果 3 1 2 1 I9 y) Z  g! G& P

& }7 C& N. T# y/ u# A# o
) H' j0 j' X5 q: 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二次开发专题模块培训报名开始啦

    我知道了