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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数8 S- c; a/ U" ]$ ^  v+ S% `

' A. T$ \5 a6 c

* K% Q2 U+ _; T2 g( Ninsert()( _6 {1 S! @0 V7 U8 L

& C8 p. z- f! Q+ J' V

& X  M' K" g6 U3 `; T7 j) _insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。& l0 A. [4 S- Q9 L: K7 ~
$ N2 c7 Q: H7 I* @( a
- D0 @  R& J/ K0 P& u' {* I+ @3 D
iterator insert(pos,elem)        / N& x1 X% u5 y) {+ h
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
# n! m( ?" u/ ]1 L9 Literator insert(pos,n,elem)        2 M8 k) f1 {! `& O
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
/ j  ]# j: J+ h' u2 `! b/ ^iterator insert(pos,first,last)        
: k9 D6 n: x% n" @4 j在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
( f9 E' b9 O2 _. d) \iterator insert(pos,initlist)       
8 F3 T2 G( W( t4 R在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
% M/ w/ j& `; A
) N" \, N+ L5 f0 L* l

2 z) A; a$ F4 B" s! P下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
- s. }9 B3 I4 @) Q. }7 K/ g8 g3 E9 R! d# U! V, Z8 }

- H: x6 u/ `( g% ^#include <iostream> # G9 t9 K  G% e4 \3 K8 ]
#include <vector>
+ v# y! P' t1 [  ], y! |# q5 @7 j#include <array>
) j7 @  [! G, Eusing namespace std;
# j5 ^8 w" \( a) Lint main()3 x. i! |9 z5 w! r/ W. Y
{
' q6 w/ [6 |3 d    std::vector<int> demo{1,2};8 c8 w7 S  k9 h# z( ^
    //第一种格式用法$ F/ P: [  d2 d( Z6 I5 K# j& h
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
  g- [, F  @" f# [) b4 J( h: z    //第二种格式用法
) ~7 S$ I& s& Q) G    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}+ t: |* G& a; W
    //第三种格式用法
2 x6 n) O: a+ A) j2 w    std::array<int,3>test{ 7,8,9 };2 c2 H2 Z* \4 J9 L; B
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
+ a4 |2 V( [/ c7 {  _    //第四种格式用法1 \7 T4 r1 f# V3 B% n, I: d2 w* C; {
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}- H* L6 o& q) w# K" U$ T
  0 ?! V& l& o; }" d; K
    return 0;/ Y4 B) m: @9 s3 n3 H- G
}) S" }4 W6 Y/ O9 s

, z2 u$ X" G. Z( }" p
( ~6 B+ T# w' ^6 C! {# o1 e
emplace()  n3 ^4 y' {. D
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。0 P6 y$ f  P* j" @- v

8 Y+ f0 i( E" u4 h+ ^
# J$ y# |  F5 p+ g' @
该函数的语法格式如下:9 X; d( j. ]7 h8 P" N5 Q; C: u
iterator emplace (const_iterator pos, args...);
0 _9 a/ m3 C, u* D# q0 B3 R+ t
: o: `. ]. d4 w  d

  m& v1 P8 e6 a% b2 l其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
7 o$ @, ~3 ~) @9 U8 Q% f" l简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。& G8 P7 a7 i. z  X7 h' o* h1 k% c
#include <vector>0 S1 x) T# p8 c: m0 C
#include <iostream>9 |; D$ L- R8 b' R. A
using namespace std;* _  \+ s$ e) L$ a7 ~( A
int main()   
2 \) u/ W- V$ {$ m; i% V{
/ r; W5 L4 @* H, c    std::vector<int> demo1{1,2};
" e) T2 `5 ?9 e( w; S    //emplace() 每次只能插入一个 int 类型元素
- D+ y1 c- S& v2 J    demo1.emplace(demo1.begin(), 3);
5 z: T% R' O' R* a) z" W    return 0;
; d& r; U, H% A  T9 k}* e% {7 ~+ q' H  O

$ V# J, e1 `( H
2 V( X/ |/ I/ W  j, v: R/ o3 t
结果 3 1 2
8 F$ m8 S6 F4 t, u
2 ]1 y0 P1 @; {5 _8 u5 S. P( [1 n* M* B" W& w  B( D6 ]* n& I& x- ]
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了