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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
+ b5 W' [& f) c: z1 e- h2 D; I
8 S; |5 O$ V+ D2 }$ x0 D

( Y; k8 J1 x* \8 m' i" w( v; Q/ Zinsert()2 ?3 z8 v4 U$ p; I/ j$ P
# s+ n! K8 x1 `8 ]( {' h! q1 y
' Q* O1 Q$ t4 F. P" i1 ?, K
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
: y1 V* K& f8 y' g# Z  [# A& z. U( W* m  X  W* Z" k/ g; h+ c

2 j! c! C9 |  L4 L2 miterator insert(pos,elem)       
6 m* Y% _4 V8 ^8 ^. X- V7 P' j& S" d在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。- e1 {) x8 |  v6 K/ v% [
iterator insert(pos,n,elem)        9 Y8 r+ R/ x4 @2 b* T# G
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。. k$ K5 G8 h; T. W
iterator insert(pos,first,last)         7 P" ?+ I' W$ F" Q9 k% X
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
7 ?6 ~1 C7 H4 x) Yiterator insert(pos,initlist)        + ]9 E( D" t$ ^# [7 R
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
- d( V! O4 C3 Y+ p
6 I! I8 i% D  l) {, h4 Q0 g' Q
/ ^8 F0 P6 u8 _) T% Q1 ?/ A
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
( ~) P% K' V8 f9 o3 f
4 [& T* \- @3 R
/ J. x0 `& [5 ]& U  F% ^9 v
#include <iostream>
3 K) z1 `% q4 q! g5 W& {, M! B#include <vector> 5 O& D+ a- q  J0 e
#include <array> ' Q2 S5 H# r, @2 l0 O7 s
using namespace std;
9 A1 {7 Y3 r. |7 Dint main()+ q0 F( ~- o2 r' `/ J
{# X) q; x. k% c/ j  E7 c4 d4 [
    std::vector<int> demo{1,2};/ }' o1 T* w% F# m% N$ M
    //第一种格式用法
& C* G$ O7 U* _) b    demo.insert(demo.begin() + 1, 3);//{1,3,2}$ ]$ S: p  X! \7 U
    //第二种格式用法+ e; h' B* v% J3 ]9 f
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}, B; A1 \& C6 d8 p( `1 u' T8 ?% ?
    //第三种格式用法3 w' x; k4 G2 ^" Z: W. A
    std::array<int,3>test{ 7,8,9 };9 J/ X1 g% z! M& B$ B/ k9 W
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}) i/ @, w& v" N5 {
    //第四种格式用法
+ J+ E( Q/ _8 _9 c# u, z1 C    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
5 ?# M& R4 i) r! }" s) q: A  ' E; L/ Y# v1 E2 {4 a! ]( H
    return 0;4 _1 k, G+ Q. p
}& \/ a$ S& Y+ w1 x; r& g3 {  P

! i  |1 m4 K) ?& O. `$ v
# Y) g8 p5 O' f  x/ Z" x1 Y* I
emplace()
' Y- u: i: Q* L+ hemplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。$ h8 t! S  z, d* J

6 p. {8 y9 o" F' M- x$ u7 ]0 b

' j8 [: e+ k) c) Y& D, x. F该函数的语法格式如下:6 u2 ~' f# w7 r5 `2 p0 ~) |3 F
iterator emplace (const_iterator pos, args...);
- P5 \, L7 O  Z, x$ e9 V! y8 v( x" y# ?8 D# c0 w  L1 J

0 K/ [) y* b" [2 V其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
' p' v4 H) y! U$ z& B简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
) \( `7 R6 J* z: w+ I#include <vector>' p/ I* m. \. u1 }3 j
#include <iostream>
  E0 r  Q+ y' J6 I/ V/ m7 eusing namespace std;$ p- D+ t6 q/ q* x0 N# c6 Y
int main()   ) k( S' l' s) R: c
{
/ i: k. l, b, M# H. e/ o    std::vector<int> demo1{1,2};
  j* S" k/ c! w0 J6 r& o: T    //emplace() 每次只能插入一个 int 类型元素$ Z3 |. ]- `) t) {/ @1 i1 S( g
    demo1.emplace(demo1.begin(), 3);' K6 b9 h' F7 x2 k3 d# l/ R
    return 0;- x0 W6 L! f9 k/ A! \, a% L+ W; J  h
}
% l' G6 z  ~6 n7 e9 |4 Q, u+ r0 i* b5 P6 r  D* I6 P
( [7 v  D1 W" U0 G  {
结果 3 1 2 + p- p3 U5 {0 ^0 a  T

& h9 Y" s! R! j  V. ^7 m8 J8 w! `+ V  _( v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了