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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数' `. o8 S4 B4 {& W

) R/ |8 w2 F9 H1 [' o$ S! _

" c9 W/ ?  X4 s0 Binsert()
% v( j. T& d' {& i
( u  X/ o4 |- U& O8 D

0 x7 v$ O+ y9 r0 i8 Rinsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
2 B9 ]' d5 d- z. ]
2 V8 \2 r- G8 S& h3 _( h

/ ]: V, [3 ^. T5 Q) titerator insert(pos,elem)        + w/ [+ g7 y- v/ u
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
+ K- R. |3 W. v9 Fiterator insert(pos,n,elem)        & T" b2 O, h) l& l
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。0 ]+ w9 n/ a* u; w( E* {
iterator insert(pos,first,last)        
& R' p1 A$ c5 W4 \7 V4 I/ L$ k在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。0 Q" b: \% s# N. h+ \5 x
iterator insert(pos,initlist)       
' i/ ?/ L7 K0 E( V) q) g1 ~在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
% q* ]% V0 s$ j* K2 [; p) j! Y/ u6 _
+ h7 |1 z0 s0 M: Q4 U# u7 X
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。! A  I& Y3 U* Y# Q5 V9 h/ s1 X
4 l$ F% F/ j; b3 ^

/ L' M  U" \$ }' c/ M; x#include <iostream>
8 Y5 @5 `1 }8 A1 P4 \0 @#include <vector> 6 t2 x! G9 J& e* ]4 m
#include <array>
' R; [: s& t+ D; w3 g+ Rusing namespace std;
# \: \, ]4 E5 Cint main()" `6 I/ ]1 l* D& z6 Q
{
% b0 L# M/ d& f( Q5 {$ s    std::vector<int> demo{1,2};
6 B1 U2 S" H1 s' h' |    //第一种格式用法
) ^. C" D! X; f, c3 p2 W+ t" ^    demo.insert(demo.begin() + 1, 3);//{1,3,2}
. b4 s7 S1 z' i0 s2 i    //第二种格式用法5 y8 k, t' O5 v! T, {
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}; _3 n& M6 u, U7 B3 o6 t. |
    //第三种格式用法
3 ]5 y. \* m' Y: {    std::array<int,3>test{ 7,8,9 };/ h! W* |0 ?, |; A0 N7 [
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
1 }! a) N1 @& ?    //第四种格式用法
4 J# E! W. l' I    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
" y  T0 r9 [/ O3 z  
3 Y* x" l% u' c: J9 \$ T    return 0;
9 _6 R: i+ Y2 D}
+ R0 i7 W* @5 A4 n( [9 [# x
4 i9 ?: Z; x" e- B2 m# D

  K, n4 O% P( A7 K! P2 Uemplace()6 K- M$ ]0 B) e2 F0 x
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
& D! ~% a3 n) F/ p
- L8 j9 {0 Z$ B! r/ p

/ B4 _3 m7 H! P8 w& }该函数的语法格式如下:8 z# D* Q$ R9 r9 Z6 q
iterator emplace (const_iterator pos, args...);- n5 n+ H* f) B& v4 ?6 C
  v& h8 ]3 P* ^! o
; E5 ]9 ^6 m' Z8 E+ B8 U5 D
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
$ I, x3 S) Q+ y$ t# x简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。* _& x! ?8 ]6 O' E# x. u
#include <vector>) i1 x  M; u- V6 z# s
#include <iostream># U- g8 b* Q; q3 X
using namespace std;+ N$ I0 j0 P9 e+ d
int main()   % u. I; P# K( O- a" ^
{# V& A) c2 P0 s3 Z3 i5 x
    std::vector<int> demo1{1,2};, ?5 C/ x! J# d
    //emplace() 每次只能插入一个 int 类型元素
1 W1 N" i% \& Y# S, p) X/ N+ q    demo1.emplace(demo1.begin(), 3);
4 t3 K1 ?9 A9 i: Z    return 0;0 K: E( [: C7 ~5 i& [8 ^( U
}
: i5 j+ c" l! {% s+ C6 }/ [3 ^; o% Y; G( ~# _; |
7 ?! t- S, p+ y; M2 ^9 n5 }! z
结果 3 1 2
+ E+ X& b4 }3 B7 r" n" A# l2 F8 u" ^/ b; W7 m# o

( ?9 g/ j% k0 S! s- V1 `- t
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了