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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数# ~3 W; t( |- G' S' L
6 J( M9 I* I: O3 R
  t2 ?# j- r  P; I
insert(); l+ t5 _3 G2 P8 v( [* F% E

% e2 w8 n9 m3 e9 x8 U

% ?! F; J6 S$ O  b# D5 J1 [insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
* K: P1 i3 _+ h
, p, b5 B2 U: I- ~

3 s, X6 x$ B4 aiterator insert(pos,elem)       
+ x( A7 @1 X( p, a. J" b! I/ g( l在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
- h* {/ Q5 R( p- J3 @iterator insert(pos,n,elem)       
9 H  ~2 X; C# U9 k1 M& T  T% I在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
: K8 @4 E$ Y& [' g& oiterator insert(pos,first,last)        
4 A8 m2 G! q$ m7 ^$ Q3 B在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
3 C4 ?( V2 O  Riterator insert(pos,initlist)        1 G+ p1 N; Y& V& Q, S
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
7 d8 C% ~0 p7 j- r  m' q9 ~2 b$ P1 W; q

4 T: ]! _' r* y* {, M- V3 \& {下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。0 ^( I- D6 O7 j" g1 x3 x- ^
  X; ^: S7 \) X' @& B, G
+ |  U: }. {( Q7 k
#include <iostream> * ]: C, k4 G6 Q. F! h+ ~% Z
#include <vector>
0 O# x7 f: R9 x' v6 x& t#include <array> 1 [4 H' j' F$ J3 P
using namespace std;( s- x( s8 o5 D6 C" K: f# A
int main()+ f! z# F" ^" d6 C
{
% x4 Z4 }6 ]3 h3 A8 U' ~2 o% `    std::vector<int> demo{1,2};, f, X6 E+ ^, T3 L% H
    //第一种格式用法
- l" I9 I* r1 B    demo.insert(demo.begin() + 1, 3);//{1,3,2}( p: n5 K5 n! p, M0 A) W
    //第二种格式用法
; V4 y' F0 Q, z% _, ]* j    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
9 N/ m6 X& Q4 B    //第三种格式用法5 C4 s$ j* D3 J9 [/ N
    std::array<int,3>test{ 7,8,9 };
+ O7 \2 ~% V( {: O/ U; \    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
! s/ @- E1 C- y% v8 x; k    //第四种格式用法4 h4 G- W9 j9 m9 Q- q
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
1 N. z% K8 Q$ I( K  0 K$ m/ K" E, ]) t$ \7 t9 P/ ^5 s5 S
    return 0;4 A5 i6 P3 Y) \& @2 `1 A
}
" d% M$ Y  Y6 w* e9 m0 |" K" v6 C+ Z) a8 Q  o) A* J0 O$ S
7 n# c* H1 U3 Y$ V
emplace()
# i. {, N1 E5 g0 ^emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
+ c$ [9 ^; L- B9 l! z7 l+ O; E9 p1 w% E0 ~2 Q5 D! n

: d3 O5 p+ h# H$ o该函数的语法格式如下:
% k5 P+ A% Z+ O/ {( Kiterator emplace (const_iterator pos, args...);" o. G, d# C( b/ o. C3 C

3 g. F) {$ O$ }0 o
0 A4 O0 f: s" f: c. l3 a
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。; V2 k. f, h: a
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。, H. t' U8 R; Y% d6 N
#include <vector>
& B/ T5 r+ i6 v+ ]" ?' a#include <iostream>
# r5 |6 \2 ?2 K" J" W0 g6 P* uusing namespace std;% Q3 x  h5 N. g4 `" p' f" ^
int main()   6 f% r: l9 B8 V8 T
{
5 m  [' ]: J; u    std::vector<int> demo1{1,2};
1 T( Q3 u8 d! M* l* ]7 K# h    //emplace() 每次只能插入一个 int 类型元素. W2 V3 d0 T/ H: a7 V9 i+ ~
    demo1.emplace(demo1.begin(), 3);
3 }/ C. U% P% [; ^) ?& w7 ~    return 0;& {, Y0 i- o$ B. A, F+ c$ `  g3 K4 ]1 e8 B
}
: q3 d( X" Z: u) D
3 T; V" l) o6 |" U% Z( \
& C- [0 \# s6 |
结果 3 1 2 4 ^8 m0 h" |3 M" D6 z
7 F' q1 @2 m3 _; {

0 [( J: ~; a$ \7 F$ f' }% |
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了