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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数
, S5 |/ b8 G8 x2 a: k1 B6 l7 }7 d. }  a9 w( K8 G0 }
& y, c) c1 J) K1 h1 M
insert()
# R3 z4 L+ B6 Q2 o
3 }) R3 X4 \  j9 t/ V
& z7 o6 `( J2 _! B
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。5 F$ d, r4 T% v$ {- C6 f" s4 o
/ n" R: m$ H6 q& u
4 g' x( m' U5 Z
iterator insert(pos,elem)        : n0 Y+ p' Y+ G/ r
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
3 _. D  h; H3 `iterator insert(pos,n,elem)       
2 S7 g: y% x3 s4 h1 z+ {7 o- ^在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。! e( L8 K) l# ~3 E; x/ {. f. U
iterator insert(pos,first,last)         3 p& G- n# K6 D) ~
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
9 j3 y; P& J  Siterator insert(pos,initlist)        ) K7 \: `& A: E5 b
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
0 U$ c9 u" g9 u" R0 t, o0 N
5 G$ |* t* W* G. J  m& {- U; P
! ]% R4 Y* a" v3 w+ V$ t- h- D
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
) m4 L4 G' @! C% @$ u/ y8 _1 k, }' I" h3 _, {6 s  u- |

5 |7 D1 y2 R, I: ~, M, |- {#include <iostream> 9 W+ {. m% m; \7 E8 Z
#include <vector> 7 `  f( ~3 H2 ^& d& A
#include <array> 4 h- ?5 O4 u% ?/ t
using namespace std;3 }* V0 `' i$ ~8 ]' n
int main()
  }( K4 h, C# P{
% D, b0 b+ b$ w6 I( Y( \    std::vector<int> demo{1,2};, N. {, n. k' @3 @, O
    //第一种格式用法/ E% j5 Q; x% A7 g
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
$ W! A( U/ M1 G; T, B    //第二种格式用法# \, S8 U( R8 }' a6 y- O
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
* e5 |; J! c" [* p3 ^) _, Y    //第三种格式用法
# ~6 O6 Z' L4 h8 u- g* V3 E    std::array<int,3>test{ 7,8,9 };
& ]7 p/ m  Q5 H+ a* e    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}5 s; @+ ?% q; r3 j4 u) l' s' C$ X
    //第四种格式用法
- T2 i3 [6 ?8 x    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
! }/ D/ Y5 z. `) r* y' Y8 K  & e5 }' x( Q  T* x8 ?
    return 0;
' ?8 y- e9 j4 w% E1 q; U}% H* V4 _- P, h0 S# m

/ A, y' ^1 u1 i3 L: c% Q, U; _

: l8 Q, v. s# R; Y. N$ s1 \emplace()# l- ]' [/ T: i6 r; Z* ]9 p9 c
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。) ]% A  S3 `1 p* T3 x+ [4 N

& ?; y; x5 D0 m0 x6 i
7 P7 ?' |. l% u9 s: J
该函数的语法格式如下:! ]) {! @* x$ I8 T* N2 V  l
iterator emplace (const_iterator pos, args...);; W! y9 ]. N5 k8 i3 f( l

5 @! g: j4 D/ X  H' a" K
" e* a9 n( F/ p( m# A( z) G
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。% }6 H( J1 i/ f
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。3 }# k% Y- Y2 F! _0 h. G5 _$ C
#include <vector>
) B& o8 G. W. B. ]#include <iostream>. T7 Y1 V/ B* F  }/ s# g) r$ R
using namespace std;% @6 x2 ]/ ?  t# P
int main()   
6 m' U1 \+ ^! l/ F6 r+ ?+ u{
2 \  B7 X7 z1 B! L    std::vector<int> demo1{1,2};( O/ T( V: {# E$ d# N4 o$ R. J
    //emplace() 每次只能插入一个 int 类型元素
9 u& M* U. c3 p3 M3 ?( O    demo1.emplace(demo1.begin(), 3);
1 W* s( o# W9 O  C7 z5 a    return 0;) Z9 L! y% k9 S
}( ]4 z6 A( B3 \# `

3 E; j# L  a2 k6 H. B# I- ]
) q* [9 I% s: D% d
结果 3 1 2
- f, j4 J3 A1 u: R' \
( d% C* G; l# y9 W' p% q  b. g! g0 _0 b2 e6 {
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了