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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数( |- K5 K9 R6 ]* t# X$ x% Q

1 s1 s' j6 q& Q. ?
" s/ }& q$ @. B% j- i+ B8 f
insert()" ^, ^" I7 F  T% R. t$ h
) [5 Y, \7 |7 ~

' I4 h7 V4 {- S' M+ a* q6 Cinsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
5 I' I, u" R& Z1 z4 }% k/ p' N1 R! l# W2 c
; n: u( L! ?2 V0 a  |$ {' T
iterator insert(pos,elem)       
8 \1 r& ~1 p# I5 T在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。% J7 P% i7 V( r( M
iterator insert(pos,n,elem)        0 [6 \  l1 K, k) ^2 E* S
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
; |7 V1 h; I3 z6 o3 l- u# |- d$ ^' ]: uiterator insert(pos,first,last)         6 u+ N8 ~/ A' h# |" b. F8 `/ m) }
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。3 d9 |- e1 A3 L8 }$ q& x
iterator insert(pos,initlist)       
+ R# Q! |: O) y# _) z在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。  H/ l* p; X& g1 @, |

  y! r" ]6 B& a
2 \1 d% [4 \& m
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
, B& F2 [2 {7 _9 y" C2 z9 H* M) ]1 I$ @; w  V3 ~# U" S

8 n/ z( J9 e, q5 s) r# J8 h. y1 X#include <iostream> 9 ]4 b; k* w2 ?9 R, ~( W0 T0 r
#include <vector> ' x* T0 A' j& b5 u: G
#include <array> ' Y, I7 F$ r. o( n- q! J: i
using namespace std;+ \7 k* R- p0 a5 @* B3 ]3 \
int main(); \3 l# [1 x2 Y* D1 d1 |
{0 s6 [/ q$ M5 c( i5 N. E
    std::vector<int> demo{1,2};
6 d7 ]* z3 [$ h" V1 l    //第一种格式用法
7 R" x3 R8 e& O; J# E+ `    demo.insert(demo.begin() + 1, 3);//{1,3,2}) T( @4 i" A9 F2 B) @3 t7 a' h; l
    //第二种格式用法
) L& V9 h! a* k6 h    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}9 E& n4 K! _) x$ u+ ]$ f
    //第三种格式用法2 d& e9 T( @) s" \
    std::array<int,3>test{ 7,8,9 };/ J4 h7 |, w% A# K% g
    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}$ n6 r! @4 l7 l5 ?7 m: d2 E9 S) N
    //第四种格式用法' v; a% r# F4 {2 q0 w7 G9 u# T7 [
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}0 ~1 P2 D* W# u
  
2 Z: [7 B7 V# o  _# l; W5 N    return 0;
% w' g1 W9 w: q6 H4 n5 |}& A9 _) g, f$ w! b& p4 a
' y) Q# I2 W/ \: _/ u" {+ c
2 u* _$ x) Y/ N" z# w
emplace()$ K5 U5 k2 ~, F
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
: {+ G# ^" k& l! J8 T( d4 F" s5 A$ E
3 a5 ?6 V. U: }5 E6 Q
3 h4 h/ _3 l7 j% d9 U& U& y
该函数的语法格式如下:. X  O% e' ~# g7 `$ ^6 R& W2 q
iterator emplace (const_iterator pos, args...);
0 ]" L3 U) F( O5 _/ M9 B5 K2 \% Q; Z) [
% S. ?' M7 X" w* o$ r) [2 Y9 r
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
% u7 u, ]9 k% l+ B: v简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
/ j% N6 T2 |: D5 y! }6 ^#include <vector>
9 K" F& A1 l' Z- x#include <iostream>5 [& p4 T: c' V1 v
using namespace std;( y0 {! N1 _; w% P/ g! t  z
int main()   4 W- N6 h+ l) ^2 v# X5 j
{, ]& L/ v3 J+ \4 X9 s
    std::vector<int> demo1{1,2};/ d5 J: U# [2 _, p# |/ Q5 o
    //emplace() 每次只能插入一个 int 类型元素5 q" [. s2 C4 p' }" [) n% j4 B
    demo1.emplace(demo1.begin(), 3);
/ q$ A& B* ?* _+ I7 ~4 c# Z+ G    return 0;6 q% w0 E0 }  I7 ^$ `, f7 g$ _$ _
}
7 x  N$ b) e, m. w: `! t
9 |/ H) f$ s* ^( @2 R8 u

# Y0 Q. _, Y) |1 G, c结果 3 1 2 % X* X+ z- V- }" R" t' {

' e- j6 N( b" w
$ q: V; |" W& g1 W7 C( l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了