PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数) l- F; `. w& r' h0 k
# v" L# y/ y# S% i- u1 I
( p( t" y0 O. U  L' V5 r0 |
insert()+ J6 B7 |$ s! h$ M

& P; X  o4 {# T

: j$ z% E* V4 linsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。7 R) i7 z, n' [  x- C
9 f8 P, O2 z5 n: M; j

# `2 y! d# c6 J7 kiterator insert(pos,elem)        8 h: M$ J$ @( {+ I2 O
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。; ^# k0 N) Y1 X( C3 E
iterator insert(pos,n,elem)        + a3 S' ?# a( r8 [% I; `
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
3 f$ y. S+ T4 N+ uiterator insert(pos,first,last)        
. Z' d9 f# o) @- A& M9 \在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。' w% F5 z" P" E( S" s& X
iterator insert(pos,initlist)        7 [  b& Q" x2 O+ F' D
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
7 Q; y# d6 t! L, a; I
$ @' {. y! u: t; r

$ Y4 K, i/ Y8 A1 j! {* O! Y( k下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。5 F& f% ^1 E" |, ?0 \
: ]. ?4 B& i) L) P. L

0 ~5 ]2 Q. z+ Z; f( z0 ?#include <iostream> # H2 `3 a+ h! L/ ]( Y
#include <vector> 7 e3 Q8 a; d8 r% w# T; u7 I
#include <array>
2 |" Y- o# J2 z7 D9 m4 xusing namespace std;
% K! C4 T0 m5 Bint main()6 }7 \1 L# y, p' P: y$ d4 L9 Q2 S
{0 m, w3 T$ O0 d7 _
    std::vector<int> demo{1,2};
7 V) c9 @1 J! u; m1 D; ^    //第一种格式用法
- W9 J5 x4 ], l! Z/ u& B4 }0 \* \$ F1 p5 Z    demo.insert(demo.begin() + 1, 3);//{1,3,2}
# w, Z. p! v/ l% p0 N2 k    //第二种格式用法% Y4 L, J  n9 g: z. R" S: e. z/ h% W
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}8 h' f6 ?. z8 F9 z4 A
    //第三种格式用法: }7 r+ f( a* N  W$ a. Y* ?; X
    std::array<int,3>test{ 7,8,9 };
) c# I/ M* m+ @  i2 I    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
" ]6 J2 K5 Z9 e# u    //第四种格式用法6 W2 v  w7 E' p6 v6 q
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
- Q! n& \* |5 i+ j/ B  ! X3 Z1 D5 u0 B0 i! }8 C. z
    return 0;7 B3 y; y7 I; [
}" C8 k  x1 U5 e8 a9 ?5 [5 o

0 V+ ?0 G! @9 ^( [- F& |/ X- _" o6 R
( `9 E8 Z# Q. ~
emplace()
8 x5 I3 s, v$ B5 A9 templace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
% c/ i! n. b: X/ w5 `( A8 D: U" {7 R$ N* \/ x
% t5 V  t3 m$ g
该函数的语法格式如下:
$ e8 t6 o5 Z) P6 Literator emplace (const_iterator pos, args...);
6 E$ c( y4 i6 _0 T
7 g- h# z" J; `1 l
5 I! E) I6 H/ v0 l5 L
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。" D$ M3 U$ Y' m2 Z
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。1 u# S$ Y$ a5 L( n+ j  U4 }
#include <vector>
9 z$ H% R2 S5 C/ j$ @/ m#include <iostream>
1 o) H  o& V+ B; }using namespace std;
, t4 h5 r5 J% _3 Tint main()     |0 h: ^; Q' E" f8 J  x
{
# s# p" Q( O9 f. J    std::vector<int> demo1{1,2};
+ T* A  b5 M+ g  T    //emplace() 每次只能插入一个 int 类型元素6 N2 t( ?. p4 f, D
    demo1.emplace(demo1.begin(), 3);
9 C* H$ E+ Y, l, d' y: v9 @    return 0;% q5 V1 n. |% O; A$ ]9 @
}
, R- E7 |7 R/ e( T9 b5 m4 m
$ S% B8 F1 L2 r/ \

' }/ K* O& ^2 `% b( _$ C$ N结果 3 1 2
, a" F! Y: v; [  z+ z6 f6 J
& t; y& \& C  U& y8 o& F+ y* ^3 J6 H, w# D. Y5 S0 i
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了