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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数" v% ~( g6 M; k  S
9 {: d( V  i( e9 [( W9 T- j  E" I
1 Y  U% c& i, ~$ B
insert()
+ j! [' ~! y0 ^9 K
, @! P" Y: R8 @7 u6 ?+ d2 u5 b

$ f/ l4 s2 L% e& n7 Kinsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
- U* O3 g, e4 j" w4 t5 H8 o; a7 x4 z# j" C/ e$ a1 G* k

( C$ j, i- A+ p- _4 m. oiterator insert(pos,elem)       
0 ^6 e# u0 I9 i- j  C9 c4 c* j7 D在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。  r8 Z( z* g3 \) N' M6 j
iterator insert(pos,n,elem)        3 c% |: w) a( F+ U; l& k
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。$ f+ T7 M6 c2 J8 X2 i- _
iterator insert(pos,first,last)         0 I5 B+ `" p8 I* P; w
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。9 x8 K9 ]6 g% y  R1 D& J4 e* I3 K
iterator insert(pos,initlist)       
, G) k) w8 V1 w! t8 s在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。3 A" ?7 h" D0 n! B3 t* Z1 e
: _! Q4 P" u3 }
& w! ^# r% F9 c
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
; m( O# W5 x1 a
7 ?% ?6 b/ Y# E+ X/ U+ C

2 \% K& M. y, k5 U9 C9 i#include <iostream> & B/ f# z) Q- K: O. l
#include <vector>
8 Y: t8 c( E+ P0 [6 l9 ]#include <array> , ^( h, M4 d1 _  z( Y- y
using namespace std;. b; Q0 F" z6 A; y' |
int main()
( y9 D$ s3 |" P* G  y{; L% s8 b0 w" c+ ^- Y. V: z
    std::vector<int> demo{1,2};
5 P, l* P. Q3 J4 h& f7 \$ V    //第一种格式用法
4 R  R# H6 d: Q7 j4 `* s1 l/ e6 N; e    demo.insert(demo.begin() + 1, 3);//{1,3,2}( Z  C* n5 K2 f7 J
    //第二种格式用法
, J2 Z, A2 F* _& ]    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
- {, j1 {: |* j( l% z    //第三种格式用法" g5 c' W) h& `% w8 P( T9 O
    std::array<int,3>test{ 7,8,9 };3 P& Y9 ~- ]1 l) O& a
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}8 @7 t- C: [: i: A
    //第四种格式用法
6 d# y$ C* h- h3 m  f( [  B    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}+ m& \3 @* n- e5 C
  # p2 ~: V2 g1 H% w. c
    return 0;/ m  p) ?4 ~8 `& [" b3 a8 v
}
  Z9 d. Z7 I, b; s2 f3 E4 Y9 R# r4 w3 M  o) Q$ W
8 u& {2 r/ i$ J$ Y9 J4 X1 t5 w4 O
emplace()
! g. J* ?9 E* c8 X4 F$ D2 templace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
5 T! T9 C6 `9 A. Y/ _. u& S' F! Y) j, U' q- t- @
  k5 \- w, t. a+ C/ l
该函数的语法格式如下:3 w$ g, N+ T% N) w1 X
iterator emplace (const_iterator pos, args...);
8 r$ l: o' a/ R4 m
- I/ w/ K- }8 T- R
- ]0 X8 G7 j# t& K) T
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
8 W# E" P3 {2 y, }5 j7 {简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。' x3 s, v6 v, A. }5 N+ e8 Z) x
#include <vector>) {) s% C" @6 O" {5 J3 U
#include <iostream>- R' o- g5 H( t( v5 ]! K
using namespace std;% g7 l. h8 J5 t( E2 B8 N# P! f
int main()   % U+ Y$ V! O5 U
{
4 A  m6 ?& S" V    std::vector<int> demo1{1,2};" D6 E: G8 ^) `$ h* @
    //emplace() 每次只能插入一个 int 类型元素
$ ?6 k+ R! l8 U# T- g3 P    demo1.emplace(demo1.begin(), 3);- E# j" j) G( t$ V
    return 0;
/ ]6 z0 q0 Y! F1 o0 V7 E}
$ t. k8 r4 n" q. r6 p" H) ^4 O; _2 b  ]: O7 \8 i
$ a! N1 ~" P1 E) c
结果 3 1 2 : [) k! h  x8 N5 Q' f
. ?# |/ |9 D; J# E1 y/ b
9 T& _' U8 V4 Q& g7 }$ e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了