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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
) o/ f) _3 l# {9 ^. k9 m: B- s5 Q8 b- |% l, @  F

7 K+ ?6 X# r% ainsert()
9 e, K, k' K6 J) ~& F1 n5 y- n- {8 E4 |5 y4 x% H' G

9 i0 c; r0 T' J8 A, minsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
. C1 f# G: E' z! M0 r" ~6 y, D9 Z9 `# z+ B5 L  V

# ^* Y0 ]3 l5 i0 C/ y% k' Hiterator insert(pos,elem)       
3 p# E/ ]6 G* v: U# n( {. J, S在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。5 [  B. s1 {' }7 W3 g. H
iterator insert(pos,n,elem)       
& a& w' r5 u1 _# T' M! _在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
+ i* y- W) T' i, Q' yiterator insert(pos,first,last)         - o  c! `$ g; {) Y& U
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。6 N* c. e: }: b9 s) D8 B: u
iterator insert(pos,initlist)        0 I) ^8 P& ?7 M+ K4 c7 [
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。* h- Y) @, `$ e3 {

5 c6 s( U" @$ p) ?) o

2 _4 ?- ?9 p; l9 M4 {" l; }6 L下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。) m# W# A1 g) H! `' A7 |
6 ?" @9 j. ~# k# }0 M- T1 h
( ^8 [( ]. n+ _; j
#include <iostream> ( ~* D0 i0 m- O7 l; B$ |
#include <vector> " G2 t$ t0 g' M
#include <array>
8 w9 t8 J1 D/ z) T8 \" qusing namespace std;
7 k5 e$ O5 j: O: Q6 D$ O- ?/ Zint main()6 v7 D& H/ k1 _
{
" t! r6 Y" G3 b. t+ s    std::vector<int> demo{1,2};5 C) n) I1 n' Q1 ^) D
    //第一种格式用法
0 I: B) w9 y, Q) k" X8 z# o; P* G! g6 G    demo.insert(demo.begin() + 1, 3);//{1,3,2}
0 t8 P5 M* j1 G6 H+ h8 i    //第二种格式用法
1 y$ Y2 @5 g9 T! M5 d, c    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
# G$ O  X/ }& K    //第三种格式用法) F" |! H2 ^* a( s5 E
    std::array<int,3>test{ 7,8,9 };. L3 K2 y% {( d. i) w
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}8 V# D2 u9 ^( u$ V' z: v
    //第四种格式用法6 F0 G8 x) E; {  K
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}* d6 W$ L. p" o: u
  5 |6 U& }- q* _/ _1 k  @+ f
    return 0;! H1 U* I7 p  [1 r3 J! b  S
}
. f: P# H+ D* T' ]& v  @4 c7 H
! Q- Q2 A7 n+ B! S" ^

& U* J+ w6 [2 c" Z2 ~1 S9 \0 V4 \emplace()
, ^7 b- K0 `5 P! A/ h, Y6 y$ Pemplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。0 L1 e8 X( V: B1 S
" d% x2 Z3 R& m
( S" A5 o( q9 F0 v: K6 q
该函数的语法格式如下:
) `' C  }3 x' piterator emplace (const_iterator pos, args...);
* g3 D% x5 f6 q9 y8 g6 j7 U  [2 H7 |) L: Q

  n+ s& K  _0 j# K: p) l其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。$ ]. |8 d' D7 o# J
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。6 H6 F  _. }& ^! U+ c
#include <vector>
" k6 y- S4 ]2 s5 T+ O#include <iostream>
6 n) l+ _8 G3 D9 T; _using namespace std;) t' }$ Q. X7 Z# w
int main()   
9 R2 s9 z3 @! c# x! b3 Y- s/ x{
( S3 T# U5 j' I; m) }1 R    std::vector<int> demo1{1,2};0 n8 Q. w& O7 m" }* B
    //emplace() 每次只能插入一个 int 类型元素
; n/ c* a6 {0 A1 B5 ?    demo1.emplace(demo1.begin(), 3);
4 S! e- u( r$ H7 y9 i    return 0;! Q, j- }% ~1 D6 N2 b$ G+ X
}
" P* V, \) y/ h
( ~- {. D$ ~6 A: e1 J

" {. b5 T" F) U: j; N6 [/ j7 O/ b! G结果 3 1 2 5 ^; T% K  c* x

) X8 C3 }9 D7 }* m% H
) P$ U; ^4 s* ^* ~; u5 o
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了