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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数/ q1 L5 I/ P/ p( w, O) D
" D/ l+ s& N  ?) A

. n, s/ y- Y) I, u. {  jinsert()
$ H2 \! c% d! }) d* `$ o; l0 C9 `6 A" A- \( m# F) ~4 v
5 }+ [% h6 h3 l7 J  _# B( _2 ~) p$ q
insert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
% K# X# ^5 b2 K
$ R0 t6 A/ b  ^1 x# ~' G
8 Q) ]7 O0 h) C8 K+ ]; z/ i9 C
iterator insert(pos,elem)        / C7 K% N4 p. a1 u8 F
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。  p  \; ~" U" r
iterator insert(pos,n,elem)        6 J8 R- D* I2 s1 o3 l6 p1 O. n
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
! k, ]. c( Z3 c$ L: W0 e8 Miterator insert(pos,first,last)         * x- }# {3 z. _6 x
在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。) }- F7 v3 g# S" n5 ]2 y# s% {* u3 I, J
iterator insert(pos,initlist)        , W1 ]0 ^7 L$ e
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。" _" O* k7 F; G7 A9 P0 O
7 |/ L* B& Q# g* ]* e' X
$ Y2 v7 I% h, [( I- w! U
下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。6 ~; E  A9 U; e0 J2 Z% U

5 I2 \) [8 H0 k, Y; C: l' ]; m

- t+ }/ g+ ?& M$ K1 t% q#include <iostream>
( r' Y* A) k, Y; T2 ^* ~3 ^#include <vector> * ~2 G: b- v/ I% E6 B9 |
#include <array>
9 d* Q2 j* N  N5 c6 E0 ^using namespace std;: P/ C/ @5 z8 `4 W6 @; F
int main()
- _- l4 \& ^! k{
" `1 K  ?* e3 ^9 q- F! {    std::vector<int> demo{1,2};- V. \+ N/ k; e: T
    //第一种格式用法
- i3 p, N/ j, ?" K% o" L( ]3 w    demo.insert(demo.begin() + 1, 3);//{1,3,2}& ^3 {7 [! r: ]* \% A# m
    //第二种格式用法
; [: G" e8 [( I& d$ f2 W. {    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
& @$ r/ `5 j6 \, l    //第三种格式用法
' y% ?7 Y, n4 F0 b    std::array<int,3>test{ 7,8,9 };
8 |; c5 M6 P% I. A( T0 `    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
- {! T$ A8 k1 I0 L/ o    //第四种格式用法: S. D% b4 i  B
    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
+ x: ]# f: N8 ~- i/ ?6 P* F$ m  
5 y9 R" o' ?. a    return 0;
- ~3 I  A3 J9 f2 p2 n: r+ Q}
& J. E2 B) L% x6 m4 K" B% y3 k
( Q( p( t! h( v2 O
! ~* P* m- A8 i8 {
emplace()
, M! G. M5 d8 E3 {emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
( |. Q5 z9 i8 \  U0 Y; `) s4 G$ E8 E3 i0 ^  A
) F$ h. T) Y; ?$ N: ^, ^
该函数的语法格式如下:
7 j3 I6 u# P* u' T, f. l+ p: B; Miterator emplace (const_iterator pos, args...);
% x3 ?( T# D9 G7 }& z; ^! Y& N6 h1 B

( d6 A7 |  H# e5 Y6 x其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。9 n2 N% @- P0 [) ]; W# n3 J
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。
  \4 s  N& v/ X#include <vector>
/ B5 t, K+ u( U' l7 h( l#include <iostream>
: t! F' M. f4 `; Q$ P+ x9 Wusing namespace std;/ s5 \2 M# {, R& s: c: q
int main()   ) q5 M; t- K) ^  a+ ^
{  A! U% r) K# z& [, a, B
    std::vector<int> demo1{1,2};
  Y! O/ r" |9 \8 k  N0 u    //emplace() 每次只能插入一个 int 类型元素
, b- N/ [4 @  P7 c6 |5 Y  c* u    demo1.emplace(demo1.begin(), 3);
* h+ T7 l2 U: |5 S3 `  e    return 0;3 A/ |( p, I! J% J
}9 U9 W+ W& [! b1 H

& C, A) R8 e9 {. \( h- B

5 w  R5 ~$ m* s% n结果 3 1 2
7 b0 `; m) o  C- z0 C* T& G5 o8 V3 p: [# I( I1 Y1 ]
2 U) |8 Y% F6 H8 ~) H7 H
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了