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

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

[复制链接]

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

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

admin 楼主

2023-3-11 11:01:23

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

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

x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数* p3 Q" D2 s  e" s

5 }. W. h5 R% }# N2 t6 I* B
( Z; f# F7 F9 ^4 {3 f
insert()
, S! v: H3 F  x6 ^# K- y) s( B
5 F, H. a' e' o4 O2 c  k% ~% E) A

: I. D8 J. m  E$ V& q1 xinsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。
5 D) U) U1 H1 l' _$ b( A- i
7 ^% w, W, E. `& v5 e: L' O

. Q/ J/ m9 E% q+ Niterator insert(pos,elem)       
4 G3 G' v3 b  C在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。- H5 J7 |1 o9 N- b  @- ~
iterator insert(pos,n,elem)        2 x. q( Z8 w* M, E
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
3 r* H! V1 I" ?. Z  aiterator insert(pos,first,last)        
( y& g  |" s: m在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。  x3 x$ J, b9 O; |6 _6 y( z! O
iterator insert(pos,initlist)       
0 X& e  _( O, L4 q8 o1 L在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
( C8 h$ E* S5 Q
; [2 H/ t0 S5 m0 j

5 G. i7 L1 {) ]% C! g下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。4 Y* C4 P8 D$ {' K& e

" Q7 d  u% Z" V7 `2 d" [

, Q' T) _4 K1 l; @& X#include <iostream> # {. g6 s1 ?: h1 G7 R1 F
#include <vector> 3 }( \, s9 G6 h7 z! @8 X/ j: |
#include <array>
7 c% D2 T% O3 L6 F" u$ x9 Cusing namespace std;
. |- ?, T, }1 c1 Fint main()
7 J) @* x3 o7 i1 |9 \, h{
' r, i7 a  \- v  E6 Y    std::vector<int> demo{1,2};2 W4 G; N4 N8 m* j- W
    //第一种格式用法  v; F# }! V+ |1 @" N; o) d
    demo.insert(demo.begin() + 1, 3);//{1,3,2}
2 r+ [7 @8 J. H6 n  y2 E" ?1 r    //第二种格式用法: e- c6 j; l& L% \* {
    demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}
2 ?, W4 c9 w# i7 l" J    //第三种格式用法( V  C$ @8 z4 U
    std::array<int,3>test{ 7,8,9 };
4 \0 f$ H0 d; ~5 ~& K. v    demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
! `8 g1 j8 g& B% a    //第四种格式用法
0 \8 z8 @5 n4 c3 |0 F0 V    demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}+ |) j) X5 U- Q1 \/ z
  : j7 B5 O" W9 z% {$ ^8 _
    return 0;5 T4 c; ]" c6 C( C7 ]1 X% m
}: ~$ D: h, f; V. l. v
2 w7 s9 d% \/ ]+ q3 e* d

% c; e8 j/ k1 O1 f: Z" ~- ?emplace()
" x2 Y# v5 {' t# |2 Remplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
5 s( a# v$ r' u7 B6 h8 M: o8 f; x1 I

6 M7 z0 N7 |3 a7 l2 y) S该函数的语法格式如下:
3 t3 N" Z% i5 {* [" l3 t, _iterator emplace (const_iterator pos, args...);
9 c# b! h% k9 v: {- ^% w
) c" F* j0 G: H, e" A- l: j9 \& D

  b# g2 @! j& `$ M5 b9 L3 S其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。, N( _5 o) m$ N4 o$ r8 s
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。, \! o2 Y+ t% {8 {, ?
#include <vector>
3 V: V3 R$ d$ b! L#include <iostream>
7 q, d8 f% _1 m, rusing namespace std;
% W1 s* D+ \0 W0 e! H3 f2 C# Cint main()   2 D, W0 Z4 B' k9 K
{
& C: N3 c: j6 S" v    std::vector<int> demo1{1,2};. h& x2 [1 l2 w5 m- k
    //emplace() 每次只能插入一个 int 类型元素
7 \( E) u6 v8 r2 H% ?* ?; [9 h    demo1.emplace(demo1.begin(), 3);
6 W7 M" f( Z+ J9 e    return 0;) k  d/ o, G" q. H
}
& p! {* i+ S/ O4 f6 U9 o: n% l+ L% M( O9 E( I
: h6 n; k) s* g+ n/ Y
结果 3 1 2
% U9 ~+ M1 Y/ [- x- h5 i$ z" d; e3 l( C4 f+ G

5 y" X0 j3 G4 Q7 Q. |$ d+ V, @6 G
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了