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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数! e( i2 y* i* q$ T; i7 Y! f8 ~

3 `" h9 G& i& U  S% ^

$ K6 t* |/ H# |" F2 Qinsert()
8 A/ H$ a' n1 e
& X. @# b& r# Y: ]
% F1 H# R/ _8 M( u/ {
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。, J, J) u+ f5 H" F( U

# }1 y6 ^5 c) ~  Y8 {; ^" e2 B
2 v: n  E' f) t; `, t  \9 S5 P
iterator insert(pos,elem)        7 Y' P9 ]' r  V# e, p% b8 Y
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。2 o! T7 q( h1 h8 T' X' {- E
iterator insert(pos,n,elem)        9 a. Y. e" a4 u# J* h+ R+ R' ~
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
5 S1 M# x4 L. z6 L  x1 I7 titerator insert(pos,first,last)        
2 T% s1 p) B5 l& Y$ Q6 G! S: A! |3 w% o在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
0 n* M: w/ e( R/ ?8 xiterator insert(pos,initlist)        ' f5 b! L1 E2 b3 q8 C
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。6 M. X/ i# v* q
. j: W" F+ H8 l1 p5 a- X

5 b  v3 r5 R/ w下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
2 v  X5 C+ h) p& v: h7 H9 W: D1 l0 |' }! \

9 v! `4 S3 F: [6 f; q6 |2 ^8 p#include <iostream> 7 P9 Z# ^) S" y
#include <vector> ' r5 `$ i  |" C# b# h
#include <array>
) W) r1 z+ `: H% e, ?; ousing namespace std;% M* [6 v  D" k$ \! b
int main()0 Q& U2 ~. ]9 }7 j+ k. f
{$ t' n0 l5 C: g4 `' |8 F; `! E8 w7 c
    std::vector<int> demo{1,2};
& r+ B/ s) p, i+ s% a" h4 j1 c    //第一种格式用法
4 ?" ^* X4 R' `! `7 j5 i  F! ^- _    demo.insert(demo.begin() + 1, 3);//{1,3,2}6 H( ], U* ?* I; [3 N" e
    //第二种格式用法3 |! r2 Z: c2 h1 a  b2 T
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
7 u& [" y  r) Z( h2 n' o! N    //第三种格式用法
; O: w) H/ s: Z    std::array<int,3>test{ 7,8,9 };
: S( H  i- R2 M0 e0 Z  l( }8 V& N6 {% ]    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
! @1 D+ \3 J3 D3 m3 k3 e# D    //第四种格式用法
7 \$ L' A0 t7 Q) L' r    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}4 j# f/ f) x1 N! I3 M0 G6 b2 l
  3 M& ^2 U, C" g; R! W, q" |4 R
    return 0;
: I; Y# M) Y" X}
; _2 i5 Z  R& G3 [2 ]3 M$ D7 i" k8 {3 w

" n2 \9 V5 H( r5 q, H+ I$ F1 semplace()
) X# ?, x6 X/ B* O+ c1 T/ P2 ?emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
9 b$ f5 W5 H7 R3 a9 X4 }) p3 W5 |* U) L3 ]" w3 A4 P/ r

. s9 j# u' m- z该函数的语法格式如下:
6 t0 m+ F* O% piterator emplace (const_iterator pos, args...);
! h% n, c  v3 {0 Q( V- r  h8 T
4 l7 S6 P6 J2 A6 x' {7 ~; y' N
; O4 Q! O9 N7 e
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。0 A- y9 |  j( C; i( s$ c
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
- E  w1 T- ^8 W: t* v! h7 d6 Z#include <vector>
  K$ V. i: C/ u# G: u; i#include <iostream>' l1 B# N: d( U; x, W
using namespace std;
: \& }) a( f1 a" T. q8 W2 m7 y, oint main()   
4 S, g* X" ]2 y. I6 ~; j{
! j& I  E( k0 H2 W* W* B    std::vector<int> demo1{1,2};, \8 w" k; r1 l, `8 Y+ g
    //emplace() 每次只能插入一个 int 类型元素
) u. r1 n# V5 [    demo1.emplace(demo1.begin(), 3);. u  z" B' H! }. i' _! {- p4 M
    return 0;
& r7 N9 |$ A: `4 `- L}. ]9 H1 d8 d; ~! }( w1 f4 T
8 B, m4 U& T$ L0 Q/ t8 c% ^& i
7 W8 ~6 |. O& S. x, Z! y2 \6 I
结果 3 1 2
* K( P8 Y, V5 y, q- J7 s, ]2 I
( j7 g- W3 L3 t& h1 m
8 }  H: E# ^* g% [" 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二次开发专题模块培训报名开始啦

    我知道了