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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
# Y* ]3 ~7 k  _  \# t. {
$ s2 _3 `$ z8 R$ U. o2 v
' `7 B/ R0 w: D1 T: o& O
insert()
6 ]5 E3 N8 l- d( I/ O+ o- s  O; O. _8 g
0 g4 R) ^7 y! k) {3 N5 w. H$ a
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
! n% H8 D4 w2 _0 q" @/ N( x
6 u- j! }1 r' D  ?/ u1 p: ^& {
7 ?) N/ f5 k" l0 P( W
iterator insert(pos,elem)       
" h9 q2 }/ O$ y8 u2 Y在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。, E) g1 T3 |5 r$ R% h
iterator insert(pos,n,elem)        ; B, B# i1 I' F( {4 t' L! p
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
; R6 D. Y* U5 g' k2 D$ i! \iterator insert(pos,first,last)        
- }; d  @, k4 Y& D8 d6 s在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
$ A4 M6 K* T! R5 Z* A2 r, B! oiterator insert(pos,initlist)        " [" o5 D) `+ L% A" D( g
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
, Q' j2 O/ M: q; N3 {/ ]7 x- p: Y7 r3 D* _) m$ ^0 j! G0 u

8 p/ R( D; d4 x9 w下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
2 z* \* m3 o* U: E* o
3 z1 R, s2 v# S  w  H% c# z
! i+ r" v! b2 R9 l5 O* k  |! B1 d
#include <iostream>
7 [& Q4 b/ z6 A3 ?4 y( g! x' ~" K#include <vector> $ M3 c# O. K! H, x2 s4 {
#include <array>
( N. G, ~" c- p0 zusing namespace std;
3 ~, p- V9 V$ ~/ fint main()
8 d0 e6 z: n! S4 {5 \7 _# k{
" y& Y6 `+ ^$ ?* G. C    std::vector<int> demo{1,2};3 Z1 ~9 D' u. P, |
    //第一种格式用法
9 W# U* e: ~; y    demo.insert(demo.begin() + 1, 3);//{1,3,2}  U( ^) K0 l8 V0 l4 T: n
    //第二种格式用法- x5 k) ?0 E$ b/ a+ z8 K2 c
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}1 i- P' ?: H6 j8 R0 \6 O
    //第三种格式用法
* H8 F, U" m9 [- `) D" R    std::array<int,3>test{ 7,8,9 };! ]4 V* G8 Z# f$ {: j  A5 P
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}0 R5 s1 v0 }% A; ?( f
    //第四种格式用法
' j& m1 e$ ~" [1 E# }2 `    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
* z3 j6 `3 q" T$ l0 s  7 A: L/ S% j0 g2 M  s
    return 0;
) M# D; m& r, Y}' T3 l. n7 E* |3 y5 f+ T& j: }% h+ ]
2 e) u5 v' E' q* n/ g; I6 H$ M0 n
: U. s, F3 _. X) z4 V5 O
emplace()1 e6 W+ d4 ?: [5 X, B' i5 X
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
( f5 K8 ^" J/ J, Q, G; g- H
; f/ i2 k4 z) a

2 [/ s8 g7 S1 v* y% u# }该函数的语法格式如下:
; I2 q7 P. n( u! Literator emplace (const_iterator pos, args...);
& \" ^+ p) E! Y: ~' Z) @! [
- O9 P3 ~3 a4 V/ g% Y

1 n( S5 T7 F6 ?' p* s: w其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
6 O4 O- Q0 u% ?/ q0 ]1 y* B* h) L简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
( I, C( {0 [/ f3 M5 [; h#include <vector>
. T/ h0 B/ D% j8 ~4 J6 L2 f#include <iostream>
; E" b+ f" d7 Y; k$ m. N7 P2 iusing namespace std;
- o1 d$ D) q& K7 h$ aint main()   0 e' l0 `. s6 L  D' F& `! R
{
+ y: L+ `4 W) b3 u8 M- o) X    std::vector<int> demo1{1,2};4 S+ S1 z3 ~7 {& V
    //emplace() 每次只能插入一个 int 类型元素5 \3 q9 q) u, J& c  w7 I$ H
    demo1.emplace(demo1.begin(), 3);
) h( T0 U6 Y/ V! W    return 0;
4 m8 |9 Y0 e4 o! r}' n4 M5 y  J5 u% F

! W" W5 z$ k* z# x1 V5 c/ X- H

9 |2 i# m# r! s9 x# h" O1 V2 f3 U结果 3 1 2
* n$ `$ s( C/ S# ?+ h
9 W& V! }! I: ~1 N" N3 Z, g$ Q, n* x- ?  r
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了