PLM之家精品课程培训

PLM之家精品课程培训

联系电话:18301858168   |   QQ咨询:939801026
NX二次开发培训

NX二次开发培训

UFUN/NXOpen C++和实战案例

适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术。
公众号二维码

关注公众号

点击扫描二维码免费在线高清教程

课程详情
Catia二次开发培训

Catia二次开发培训

市场需求大,掌握核心技术前景广阔

Catia二次开发的市场需求大,人才稀缺。掌握开发技能潜力巨大,随着经验积累将在汽车、航空等领域有所作为。
B站二维码

在线原创B站视频

点击关注工业软件传道士主页

课程详情
Teamcenter培训

Teamcenter培训

全方位培训,从基础应用到高级开发全覆盖

涵盖用户应用基础培训、管理员基础培训、管理员高级培训及二次开发培训等全方位内容,由多年经验讲师打造。
QQ群二维码

加入同行交流

点击扫描二维码加入QQ群

课程详情
×

PLM之家plmhome公众号

课程涵盖: PLM之家所有原创视频

×

关注B站视频

所有高清视频一览无余,全部在线播放学习

×

加入PLM之家QQ群

同行交流,疑问解答,更多互助

PLM之家PLMHome-国产软件践行者

[资料] vector容器提供了 insert() 和 emplace() 进行元素的插入用法

[复制链接]

2023-3-11 11:01:23 537 0

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
% x  }0 P$ a1 l# X) Z  _
0 ]) B) M/ T6 `4 d1 _

( v% g! P% K) c$ p' A$ winsert(). s' L' x. k/ b  A) A, M8 M

- Z& q3 A7 |6 X' G- g
8 _6 n5 I0 U0 `, F3 |2 ]
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
: B# T6 M" I+ C6 O, V8 O" ?3 M0 ^/ z

5 `! Y' g  u; N  j- F  uiterator insert(pos,elem)       
% K/ X! ]% O6 l' P6 P" u+ [在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
8 Q, p, L6 E. k) L, k' w' b- a; Witerator insert(pos,n,elem)        ; F& A# u; p; o
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。5 y2 r9 q/ h& K3 O
iterator insert(pos,first,last)         - ^! Q% {9 n! a  m8 M/ h
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。* m; N& T8 ]8 o/ P& v
iterator insert(pos,initlist)       
$ n8 ~5 Q8 x# A& x0 ]+ X在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
: K# J' I" ]* r- C8 _
" l$ k- p( ]+ I+ [

- }1 R1 @5 k8 X# H( o下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。1 T8 c& c. Z/ L
1 e5 I% A  w9 N* y! r0 q% a
( D$ t- l& E9 a+ a  j4 D
#include <iostream>
; U  _" ]$ {7 E, r#include <vector>
4 ~" w4 _) ]* h8 s% I#include <array>
3 t! {3 A  G' w8 `7 Q  eusing namespace std;
% y0 J1 s7 D# r, w4 Z& mint main()
" h4 S1 c+ e! a6 A5 M! ?9 N{. M& P, D: v8 }; R
    std::vector<int> demo{1,2};: R5 M- T. v5 a- q# j7 E- R
    //第一种格式用法
. T' K7 l7 M, x6 C! C) `    demo.insert(demo.begin() + 1, 3);//{1,3,2}9 m2 n& X# L  A, p
    //第二种格式用法
0 `: f7 K" n; ~! B3 \% @$ T3 c    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}2 D$ t2 [  s# X# d
    //第三种格式用法5 l7 r3 p7 Y' ]; t' `* W- G8 D( G2 ^
    std::array<int,3>test{ 7,8,9 };: K7 I; l8 `: B' q3 P
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
6 a8 e4 V3 B8 L* k% L7 C    //第四种格式用法
" h! e# t/ s# D2 a4 j6 [    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}. Z' j5 ~% h8 e2 U0 f
  
0 G" w0 A. Y" A, G7 Q5 G0 A    return 0;
8 W0 F1 Z% e8 I* T}; o' ^) |, n; }: r/ D

) N8 w* |* H! Z

& _2 `! M( @) W7 v, P! gemplace()
. k$ L9 O$ B" Zemplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
3 g3 i0 p9 ?" M3 o# K
6 F- n, z( ^( R, j$ c2 v

, J5 w/ b* i$ l. s/ S* }; \. \* L" g该函数的语法格式如下:" S; Q- G: l+ i3 @9 {  ~6 `
iterator emplace (const_iterator pos, args...);) r5 w) O0 D9 i; W$ Q1 b, C
# b) Z! |% T7 v8 B& r
" {4 l, k1 H% r; v
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。. i! `+ |" w0 {6 w8 t
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
4 F1 Y0 F" i0 ~0 Q9 j#include <vector>
2 s# Y* W2 `0 l0 ~$ u1 [/ d#include <iostream>
+ m8 ?9 R3 i% yusing namespace std;5 o; W$ f; q. W+ _& E
int main()   0 G0 T% u8 r( r. G+ n7 ]
{
# ?5 w- G: x* k0 ~8 f: _    std::vector<int> demo1{1,2};
' n9 y0 \2 l6 z$ D' X, d, [    //emplace() 每次只能插入一个 int 类型元素' I8 Y0 r6 z3 w- b
    demo1.emplace(demo1.begin(), 3);
, u; E5 D% N/ {    return 0;
, |" _4 g6 m) n1 R5 O) n}, O9 F( o) _5 }% ]) p' {4 M4 |
$ U/ P4 q# q0 F3 c  w) p7 y6 _

; {8 k6 V! [- n- u, ]. y+ T& Y结果 3 1 2
1 P4 J  g$ c  Z: T1 j7 u/ ?. M
! I9 Q% [6 a7 _1 j: h3 t" \! l5 [. o7 ]6 N1 V7 g, `
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了