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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数' H8 l* |3 j; Y( `3 G
% C& O8 I, Q/ z, H: O
4 o) C  h) H8 X- _( B4 D( y: R! Y% g* ~
insert()1 E' I% g! W' `' s4 z$ A' {2 e

; B9 q% E; g% v8 U) \" C

7 _0 s6 U# o% U; h- [$ B! Winsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。6 C2 D( y$ C9 l/ z
+ G; _; ~1 I8 b6 k8 g7 d8 E
9 j, @" J: @: O4 m" q4 e' H/ n; l
iterator insert(pos,elem)       
- W: Q; v4 m; r% S: b: ]0 `! v- {在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。0 ?8 G5 S% C+ `9 N. |% w0 h' n; ?
iterator insert(pos,n,elem)       
% l) e: T" x* b& n7 P8 d% f在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
' K. u; o+ A. K% w* diterator insert(pos,first,last)         8 D( T/ O# I5 q8 v8 Y+ R2 d8 c
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。  [5 E5 v; Z" w0 o2 y; `
iterator insert(pos,initlist)       
/ l6 q' C% L  z+ K- s# b在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
$ b' H8 Y+ v" [- V' k8 o2 a; L8 i6 @$ g) n
( @; X! q5 j+ ]% n- K% o4 x
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。! P: z8 V+ s$ O% D+ x

/ Q! ]. ]. o4 @0 w% y/ ]$ q+ T
" D! `( }5 r5 Y0 @
#include <iostream>
2 i) t, O# z: Z2 N#include <vector>
' f- T6 K# X( v, Z* T#include <array> ) _- y* @8 B. Q6 A7 v: |
using namespace std;: @- p( d' R. B3 J; h
int main()
8 L) B! i% @" [7 ~6 |( U{6 X/ ^' k2 b3 {
    std::vector<int> demo{1,2};
3 g5 ?7 Z! B. t; a/ d- c    //第一种格式用法6 C% d; T4 X7 Y! C
    demo.insert(demo.begin() + 1, 3);//{1,3,2}" K. T6 N( a( U( |
    //第二种格式用法
7 D& G5 L8 l! {8 _6 }, }  N    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}- u2 \' q  \) Y' [7 c
    //第三种格式用法, c) V8 A. [9 ]
    std::array<int,3>test{ 7,8,9 };  d# w& R+ P+ g9 f' ?; Z
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
+ d4 S% G/ A8 f3 C5 B    //第四种格式用法5 W; M) x6 r  C
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
2 u& y. n7 `* b+ u: Y  , j8 T0 L1 b1 S- K; M( i
    return 0;7 O* O, q# b' [; X
}% F7 B& q" A1 }, P* u

7 M2 W& a: C8 D  B: s! {! z
- {) ~1 h) c' D* U6 {1 w7 ~/ \& O
emplace()  C( s  i7 ?, E( |+ V
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。) `) N3 D" W: ~% T, \8 J0 x. ~; z

4 I1 c( V9 h' v; }+ P$ Q

- i0 ]+ @1 B. q8 l( b' y) H* T6 u# }该函数的语法格式如下:
) C& I5 Q3 F' Biterator emplace (const_iterator pos, args...);
; @2 \+ |& D* {+ \2 J$ W9 y; x" q/ B7 K& {3 m3 j" g

8 r1 d: h  B6 X* ~. ~3 {( O& w5 b其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
7 T8 }$ K0 y6 M2 n# c7 }简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。7 L4 U+ a' M+ H/ c" t4 e: S
#include <vector>
/ P& ^0 G. T4 B% O& V#include <iostream>
% T* D  L1 g; Y' c3 o; @0 uusing namespace std;4 i; P) H* I7 Y& Y2 ~' D% F8 E, V
int main()   
5 Q: U2 u  C) ?2 k+ q1 }' f{/ Q& f7 f  ^& s  G1 j9 \: G# A
    std::vector<int> demo1{1,2};
5 N' \( B# Y9 `4 ]    //emplace() 每次只能插入一个 int 类型元素
5 V5 H9 e( |0 `8 o0 L    demo1.emplace(demo1.begin(), 3);; t0 z$ s0 ]( Y$ b, ?
    return 0;; O7 \. q8 |- o5 u
}2 D2 K' k7 p1 p' G' N* |
( d6 D2 E! A% _

3 L1 G$ |: A4 |" N6 p* \- ]结果 3 1 2 ! a0 h' O8 _8 Q1 }+ O- N- U2 K
7 N: u" E4 Y& Y9 y

  z, b0 w4 B3 `: b& k  V2 ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了