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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数+ v" `* O0 h4 |9 M) }* V
4 O! n8 E/ a" t( x% _' q
* J# V& u2 W5 g6 V. W! e
insert()
& c( K. f2 b$ V" T  _. l* K- f/ w% E
% V" l# u. W% \0 S
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
7 c) N& A5 t1 o) s; ^' F) u4 C* u
' s! S& S( V- {" q& U
+ f/ d( F) }2 C' Q1 ?, R/ N, }- g
iterator insert(pos,elem)        # `2 v4 O0 N, x  [; A# i
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。3 `% L7 t  ^# i1 K; F5 N
iterator insert(pos,n,elem)        # c7 O8 C. v& C" c2 w
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。' s. ?" g6 K2 b
iterator insert(pos,first,last)         # \% h& _: N0 l7 m' L
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。4 S1 p$ o; @; y: k; W; j' e" S* k
iterator insert(pos,initlist)        7 Q3 _& Z! b4 Y" B% ^- Q* \- P0 h
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
7 b3 k0 o" D' I: V  J3 C1 b+ k! l# ^6 N

# g/ B/ _: J0 ^4 u8 n. s下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
" r" o5 a, h( [. y: z3 B% K
9 h1 g' t% e. o+ N
4 j& d1 v& j8 G8 ]) D. ~
#include <iostream>
. B# o3 q' U$ H#include <vector> * _6 L. b! c2 P  u
#include <array> 6 G. H& Z/ K6 W
using namespace std;
/ T7 `- j7 S' y+ V* a# Lint main()' F6 I& i) r& \" \5 b- t; j7 i) D
{
2 X- Z/ z. i  A' _: [3 \9 O    std::vector<int> demo{1,2};3 E1 a' s3 V- J- V: e
    //第一种格式用法
& w+ t+ f1 V& B# N    demo.insert(demo.begin() + 1, 3);//{1,3,2}
: N; z: G1 \/ w( j% t* r, p    //第二种格式用法
" Q/ m2 a  N4 _# ^5 J  ^    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
- n' l  D0 v$ a+ M* x. c& N    //第三种格式用法" o, U/ D+ ~# u+ `; g  Y0 p
    std::array<int,3>test{ 7,8,9 };
2 S8 {6 M. v4 f% U    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}$ A: n% s, h* s2 C" {
    //第四种格式用法
% x0 Y  p* i, a# [    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}3 E7 j" U  ~; ^
  
' @" O# ~9 R4 {, O    return 0;" q1 i9 N- k5 @- J) H
}
) D- G  Y9 G+ r9 [8 z) S" Z* n, d+ n  a9 V2 g3 K

8 E( |8 X. c$ zemplace()
1 s; [" D1 J5 }emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
" e" q9 v# _1 [* g. N5 h+ ~
8 p. H; f- @) `3 A
+ D; Q( H, j' F) J+ y: D
该函数的语法格式如下:
+ {! P% h( r% z. L: @' ~2 Witerator emplace (const_iterator pos, args...);% N' F' o* g) X7 t

* O9 W8 A' ^$ ]" G' O' F4 R& G
: f5 d" t) c- H/ {
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
) ^0 b% c/ L. R' I简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
" F3 ?: b- c  p5 a#include <vector>
" a. `& B' x4 _  P& U#include <iostream>) k# b, z! |% [
using namespace std;* m: G" h" ^5 ^0 L3 f
int main()   
' S3 e' p! }, U1 C4 j# o{( Y7 i* ^" P! k$ x# V
    std::vector<int> demo1{1,2};6 B) v8 w% g$ o7 g# n
    //emplace() 每次只能插入一个 int 类型元素  D9 b, i; E: E* J; G  n
    demo1.emplace(demo1.begin(), 3);
: |0 s& ]& N: ?    return 0;
9 S# J) u: F* f7 Y; w; m}6 n: O7 O. {2 U, ]

! V/ B; Q2 K2 s( P5 _# H
8 N& }, C( N' N9 Y
结果 3 1 2
5 E3 f# y8 y2 p% n1 u2 c
, V4 l, }$ n( p4 ?' R/ A9 }& p5 U' h) b4 |1 G* ]% b+ Q! J
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了