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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
3 p& Y# M) F0 v4 C% I! p
5 F! x; J1 N6 V9 T
9 d/ M0 a- n- m- ?: x
insert()) R% ]' ?' Z9 q1 s! H

( |* z: L" l. A: f; Q& u5 a

: n; J6 A9 s4 c0 f5 linsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。# K; m4 s0 h9 E% P5 F# w" s$ d
7 C; V4 d5 h- V3 g. t! _
  ~# [" A4 R! D& Y9 {
iterator insert(pos,elem)        8 p6 v% V$ y4 K  E3 C' y! @: p  q
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
2 i& z6 T' l5 W; @/ biterator insert(pos,n,elem)       
4 J9 Y% l/ D  d- N在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
; K( b# e, J/ Q+ c4 F5 y0 c# L) R0 uiterator insert(pos,first,last)         5 ?" ~0 w0 w, P' `. s1 U2 w
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。& c. R* c4 E2 O& q) L5 \7 A
iterator insert(pos,initlist)       
( G% B4 o$ u3 w" v: t. ?  O: ]在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
. k" Y% L! f% H! x2 P% Z3 u* k/ v2 l/ j+ n( P  L; o  m! q

* {; n6 W2 f8 C4 f. H下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。: ^+ _2 L5 M, D5 L- [1 H

1 v) T0 E4 _) U6 I3 @
7 ?2 u! x4 M7 U+ H& M
#include <iostream>
- V  F, `: g. a( G#include <vector> 1 V4 E- n7 {( E6 y+ Q
#include <array> 3 p" _' v$ e: `
using namespace std;
/ ^  Q( c  f) r# b3 J6 o1 oint main(); S, ?- w' T, V4 L% h
{) M: H6 U, ]( E# _; S, r
    std::vector<int> demo{1,2};
' ?* [4 N' Y+ E2 P" Y6 a6 w7 t    //第一种格式用法
5 j; j- J; s# K* I# X    demo.insert(demo.begin() + 1, 3);//{1,3,2}% k* R; i( D) e4 G2 X
    //第二种格式用法! R$ b+ N0 @$ c# D( w; x) E+ i
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
. }1 h: E3 V( k    //第三种格式用法
; S+ w& C. O( \5 M% g    std::array<int,3>test{ 7,8,9 };6 \$ r; n+ `$ q2 i/ J0 `
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}$ `$ V5 B* G1 j% y% G  C
    //第四种格式用法+ u3 p# d# B- M# V, O
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
1 C1 F. L0 w4 ]/ L) k, `  
8 p6 Z7 Y" {2 |    return 0;  D6 q& r/ L- ?1 R8 g1 S5 H' g
}# Z0 S6 ?; Y! f: B6 v. d  Z( b

# V, E7 k9 _" \1 t0 `( D% O' l

* I6 ~! A8 a$ z! T5 _emplace()
9 w% x2 B* g' Jemplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。5 N$ @, v7 o/ S- \, i3 g. V

" _; C: ~# W. a2 t

- L4 n# c/ h+ H- a7 V6 C1 D该函数的语法格式如下:
3 T  y2 w4 B4 {1 N" x+ j9 Qiterator emplace (const_iterator pos, args...);
" y8 @0 w3 p' O  x
  [! R5 o# M; d1 l
4 C% x/ G5 f- F$ c  v
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
+ G* l0 G, H. F0 b6 p# p+ w简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。3 h, M5 Y$ t! k' b+ H- O
#include <vector>
  C3 i0 Y6 \: c6 l* n* j#include <iostream>4 E; K+ K/ \" K! X* O- i" h; \
using namespace std;
$ E2 x2 T; ?/ P8 nint main()   
) W0 Z8 u% K5 i% N' l. U{% P6 o& @! F5 Z" V  m, D
    std::vector<int> demo1{1,2};
  R! N  S3 z! B: q) A" k4 y    //emplace() 每次只能插入一个 int 类型元素3 l8 }% K  v% j, m+ V
    demo1.emplace(demo1.begin(), 3);% D  L4 k, u. e  u
    return 0;# u2 C& n; Y- M9 X0 |4 `$ B
}
5 ^  t& m" m+ D' W, z
1 ~7 w; U1 F0 M6 l  o; ?+ G2 l

: e- q/ R" y; x) w* y结果 3 1 2
: M- T. ~! y2 s0 m3 F; I
: |2 p" N  m+ c7 S6 B) ^$ B* z3 {0 @2 J* T$ 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二次开发专题模块培训报名开始啦

    我知道了