|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
vector容器提供了 insert() 和 emplace() 这 2 个成员函数) l- F; `. w& r' h0 k
# v" L# y/ y# S% i- u1 I
( p( t" y0 O. U L' V5 r0 |
insert()+ J6 B7 |$ s! h$ M
& P; X o4 {# T
: j$ z% E* V4 linsert() 函数的功能是在 vector 容器的指定位置插入一个或多个元素。该函数的语法格式有多种。7 R) i7 z, n' [ x- C
9 f8 P, O2 z5 n: M; j
# `2 y! d# c6 J7 kiterator insert(pos,elem) 8 h: M$ J$ @( {+ I2 O
在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。; ^# k0 N) Y1 X( C3 E
iterator insert(pos,n,elem) + a3 S' ?# a( r8 [% I; `
在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
3 f$ y. S+ T4 N+ uiterator insert(pos,first,last)
. Z' d9 f# o) @- A& M9 \在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。' w% F5 z" P" E( S" s& X
iterator insert(pos,initlist) 7 [ b& Q" x2 O+ F' D
在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。
7 Q; y# d6 t! L, a; I
$ @' {. y! u: t; r
$ Y4 K, i/ Y8 A1 j! {* O! Y( k下面的例子,演示了如何使用 insert() 函数向 vector 容器中插入元素。5 F& f% ^1 E" |, ?0 \
: ]. ?4 B& i) L) P. L
0 ~5 ]2 Q. z+ Z; f( z0 ?#include <iostream> # H2 `3 a+ h! L/ ]( Y
#include <vector> 7 e3 Q8 a; d8 r% w# T; u7 I
#include <array>
2 |" Y- o# J2 z7 D9 m4 xusing namespace std;
% K! C4 T0 m5 Bint main()6 }7 \1 L# y, p' P: y$ d4 L9 Q2 S
{0 m, w3 T$ O0 d7 _
std::vector<int> demo{1,2};
7 V) c9 @1 J! u; m1 D; ^ //第一种格式用法
- W9 J5 x4 ], l! Z/ u& B4 }0 \* \$ F1 p5 Z demo.insert(demo.begin() + 1, 3);//{1,3,2}
# w, Z. p! v/ l% p0 N2 k //第二种格式用法% Y4 L, J n9 g: z. R" S: e. z/ h% W
demo.insert(demo.end(), 2, 5);//{1,3,2,5,5}8 h' f6 ?. z8 F9 z4 A
//第三种格式用法: }7 r+ f( a* N W$ a. Y* ?; X
std::array<int,3>test{ 7,8,9 };
) c# I/ M* m+ @ i2 I demo.insert(demo.end(), test.begin(), test.end());//{1,3,2,5,5,7,8,9}
" ]6 J2 K5 Z9 e# u //第四种格式用法6 W2 v w7 E' p6 v6 q
demo.insert(demo.end(), { 10,11 });//{1,3,2,5,5,7,8,9,10,11}
- Q! n& \* |5 i+ j/ B ! X3 Z1 D5 u0 B0 i! }8 C. z
return 0;7 B3 y; y7 I; [
}" C8 k x1 U5 e8 a9 ?5 [5 o
0 V+ ?0 G! @9 ^( [- F& |/ X- _" o6 R( `9 E8 Z# Q. ~
emplace()
8 x5 I3 s, v$ B5 A9 templace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。
% c/ i! n. b: X/ w5 `( A8 D: U" {7 R$ N* \/ x
% t5 V t3 m$ g
该函数的语法格式如下:
$ e8 t6 o5 Z) P6 Literator emplace (const_iterator pos, args...);
6 E$ c( y4 i6 _0 T
7 g- h# z" J; `1 l5 I! E) I6 H/ v0 l5 L
其中,pos 为指定插入位置的迭代器;args... 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。" D$ M3 U$ Y' m2 Z
简单的理解 args...,即被插入元素的构造函数需要多少个参数,那么在 emplace() 的第一个参数的后面,就需要传入相应数量的参数。1 u# S$ Y$ a5 L( n+ j U4 }
#include <vector>
9 z$ H% R2 S5 C/ j$ @/ m#include <iostream>
1 o) H o& V+ B; }using namespace std;
, t4 h5 r5 J% _3 Tint main() |0 h: ^; Q' E" f8 J x
{
# s# p" Q( O9 f. J std::vector<int> demo1{1,2};
+ T* A b5 M+ g T //emplace() 每次只能插入一个 int 类型元素6 N2 t( ?. p4 f, D
demo1.emplace(demo1.begin(), 3);
9 C* H$ E+ Y, l, d' y: v9 @ return 0;% q5 V1 n. |% O; A$ ]9 @
}
, R- E7 |7 R/ e( T9 b5 m4 m
$ S% B8 F1 L2 r/ \
' }/ K* O& ^2 `% b( _$ C$ N结果 3 1 2
, a" F! Y: v; [ z+ z6 f6 J
& t; y& \& C U& y8 o& F+ y* ^3 J6 H, w# D. Y5 S0 i
|
|