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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数8 M  E' @) g4 f% Q& k& u% ]* n
# p5 c/ d, K" L) B( Y
+ g% F. S9 ], L) `8 @- f9 }. v
insert()
& k+ C# @% ~3 ^- T7 M4 t& d
4 j; D. T8 q# \' J+ |3 u

; `$ ^5 z( u1 x* g% J  R, e. ginsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
* h: C# N& X* O; j, g* Y3 }; s3 q, \8 W3 E- S, Q- i
: Y6 E, @( f( W  O
iterator insert(pos,elem)        ' D/ h" c% c' x$ C8 M8 E0 A
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。! X6 `' i3 V7 J" ^, R( z
iterator insert(pos,n,elem)       
, k% n3 X# Q1 R; C* Y在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。( Z* q9 p+ c- M. a1 Q; Y
iterator insert(pos,first,last)         & U; d9 m  ~3 R5 E
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。0 D2 q: K' M3 {4 ]" a" ^: o7 T
iterator insert(pos,initlist)       
' ^/ J, \7 c8 v) `2 p$ P+ Y在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。- O9 W' }$ o" r- ~' x" L) ~6 F+ r

9 Y& e) y4 K* b* m; H9 c

# b, x! S4 a8 \5 c下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。, O, z1 b# l0 u& c9 f! F3 [

$ R$ a9 N5 ~! ~9 o
7 }$ ~& v& X- J9 V4 f# L- C' b# L5 E
#include <iostream>
' C4 @; \% e/ h9 p#include <vector> ( o. f0 P% U/ X) U
#include <array> ; G/ ]3 }0 T9 s3 i: ~
using namespace std;7 l8 t9 ^2 U" s2 f# Y
int main(). c, n6 d, T, I2 J/ V
{* A% s2 h  g- P5 G, j( U
    std::vector<int> demo{1,2};
) `" g- z/ ]( X% K% n2 c7 m    //第一种格式用法, _2 R; D. X* {* o# A; @& b
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
9 U% P1 i3 U0 g, V# o2 Z) `* w    //第二种格式用法$ G& [( X0 Z1 r$ [2 `
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
( Q5 x6 r. a: T* Z- C    //第三种格式用法
) J7 o9 Q/ Z8 ]8 ^6 ]' ?0 A    std::array<int,3>test{ 7,8,9 };
& t: I* S9 [" q/ b  b- a    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}: g$ O& ?+ q0 S
    //第四种格式用法8 `" Y3 t+ R* g% h6 K1 O, i$ d2 y: A
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}% N! z0 q! w' N4 ^, h: h& H2 _
  ( B& O; L# q3 h) @
    return 0;0 w9 }' x0 R, I$ c
}
3 Y3 [! {2 |; K& C" o6 |
  \* }- p+ B3 d
0 z' l0 X$ K  F3 ~8 _& i
emplace()
# g7 }( z, _+ A6 jemplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。, x' ^7 h5 W) m' [$ @' N1 l
# w! R1 e  T- Q% k; L$ V$ ?

% |# _9 \  }5 R+ `2 N该函数的语法格式如下:
3 Q' ~* s( o  u* p8 T6 Piterator emplace (const_iterator pos, args...);
% G0 X0 ?4 g' B) }( P2 d. Y- i3 p& t" w
! b& d5 T7 x5 |
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
1 [4 ?! q! W' X/ g6 o/ @简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。, c7 x& L+ F; C+ a, P8 o. W! u
#include <vector># f# y! `- ~3 \! v5 f& x
#include <iostream>
; s0 N. V: x" x3 D- `: W! husing namespace std;
! J0 K4 _! \& X  b0 s1 fint main()   8 R% {+ ?- E; r2 m0 _  R4 J: b
{
6 ~; S; y7 |( M5 W+ s    std::vector<int> demo1{1,2};
0 H$ o- W  m  Q& \6 M- U    //emplace() 每次只能插入一个 int 类型元素" T! u6 c' _5 q4 u2 B& x# v# s
    demo1.emplace(demo1.begin(), 3);
1 _1 G: l* v9 E4 }4 P6 `# K    return 0;
" a  L/ X. _* \}8 r, P7 x" A8 v* T4 v- R

; M; b. Z  g# m1 d6 b4 O

+ W2 P- H8 E, T' c* q& b结果 3 1 2
) t" n: q7 E' i" |
' ~- R& k5 e- s6 t, \3 v" Y, V
. T8 e4 l# j, ^  V, G% {9 d$ n+ c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了