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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数" X6 T9 C, i! v$ q
; A7 ?! a+ ~- W: b; b

+ j1 J+ a! f% Z+ c6 ~8 A3 zinsert()# n3 |. \  m5 i2 t3 W! s( ]0 A" V

" O6 ]1 b+ v, T9 Z0 M$ R
7 `2 Y% u, m& I
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。, R# g0 }( G0 B7 g

5 e7 ^4 b! [! p0 ]* L0 R/ |

( c0 X/ O9 M% k0 ~  Siterator insert(pos,elem)        . x$ _6 ]' ^0 X& i2 k
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
" D+ u3 o- n9 Diterator insert(pos,n,elem)       
! q. f( o/ |- t5 t% H+ ^; F5 |在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
# A9 }0 f0 }( d# j6 E3 iiterator insert(pos,first,last)        
& u! y/ N, p2 D; \在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
0 C/ M6 [, E9 w: iiterator insert(pos,initlist)        + E: n. C0 B5 H  I
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
. Y9 a! T; k. \# ]" L
/ l/ B& e  k+ w% s( Q

* C! n. D- C- A1 P下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。
( r# Q3 }; C4 p: a9 ~! j# r1 J* _4 J% ~0 r! o8 ?% S
" `/ T; C# C, F( K
#include <iostream>
/ z& }) `5 v) S! R- _$ `3 i#include <vector> - G6 c/ c  l2 K8 Y0 H+ I
#include <array> 5 ]& W1 v' s+ h1 F0 k
using namespace std;
0 H- p8 w3 K+ Wint main()
) |' M! w+ C( @& P: h- D; L3 m. {, i{
  T: [% ~4 Y1 }: c  W2 J0 w    std::vector<int> demo{1,2};  s: c0 a3 N* v1 J/ X! U7 m
    //第一种格式用法
) B6 j8 ?6 @  F4 r  j8 K    demo.insert(demo.begin() + 1, 3);//{1,3,2}
* d! j8 Z3 a" [7 u' @1 f2 ?6 K    //第二种格式用法
  Y( B3 H4 x4 R6 J3 r7 J    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}' a' l  a) i* K4 i! S0 _* Z; u
    //第三种格式用法! a7 `3 D3 G. s! S
    std::array<int,3>test{ 7,8,9 };
& S8 q1 F! |: a- x6 R6 h    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
# Y* \; n1 s- q, n# g# r    //第四种格式用法: l0 S9 r: m( g( r& V
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
4 g# T* O, F0 E  
$ O4 l, ^& @) s# _    return 0;  ~+ S, |" \# r  p
}
7 M& _( _, D2 @) _: U: ?; ~, _! e* _5 K
' Y4 t1 z3 W9 x8 H
emplace()) F' V/ ^% o% z, }- |
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。' [8 S# B* ?+ s

0 z+ ^% \# o# W+ |2 V
: H# a, c$ N4 P9 ?* i9 @# Y
该函数的语法格式如下:3 K+ N; L; i0 Y( z3 W/ {
iterator emplace (const_iterator pos, args...);' L5 n- S2 p2 a: Q+ G: ^

  W0 M7 k" v6 j

$ ?# Z8 Z( G: K' [& }其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。
1 W/ p; m! B- n; |简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
, E- n7 K& F! z$ E& l+ b% u# w#include <vector>
2 G6 j) L- `- [#include <iostream>
6 i* _5 D" G+ pusing namespace std;# ~5 h+ F# F+ m7 C& C0 N
int main()   
8 P, v! L1 X4 ^* N{# \5 @. [1 v7 B
    std::vector<int> demo1{1,2};
# S/ E3 ?. K3 q7 p2 T: O: f    //emplace() 每次只能插入一个 int 类型元素& I9 S# I, \) h' \& a
    demo1.emplace(demo1.begin(), 3);! O( O/ X4 _( \% a; t9 f7 C0 f' F
    return 0;$ E1 i( s0 L1 p" O' h( h
}
- O; c; G; Z$ O7 l* \, f/ U; j0 J( A3 j0 i6 D5 z- t

0 d' G; j' h/ L8 C1 G3 J结果 3 1 2 $ f" ~/ _& O& {( f/ x" k" s/ E

: L. R7 z! o  S. p
- ^- d* @- M0 U" c6 c
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了