STL vector插入元素

STL vector插入元素教程

如果我们需要向 STL 中的 vector 容器插入元素有两种方法,即,使用 insert 方法插入元素和使用 emplace 方法插入元素。

STL insert详解

语法

语法格式 用法说明
iterator insert(pos,elem) 在迭代器 pos 指定的位置之前插入一个新元素elem,并返回表示新插入元素位置的迭代器。
iterator insert(pos,n,elem) 在迭代器 pos 指定的位置之前插入 n 个元素 elem,并返回表示第一个新插入元素位置的迭代器。
iterator insert(pos,first,last) 在迭代器 pos 指定的位置之前,插入其他容器(不仅限于vector)中位于 [first,last) 区域的所有元素,并返回表示第一个新插入元素位置的迭代器。
iterator insert(pos,initlist) 在迭代器 pos 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。

STL emplace详解

语法

iterator emplace (const_iterator pos, args...);

参数

参数 描述
pos 需要插入的位置。
args… 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。

说明

emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。emplace() 每次只能插入一个元素,而不是多个。

案例

insert插入元素

使用 insert 给 vector 追加元素

#include <iostream> #include <vector> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<int> vec{1, 5}; vec.insert(vec.begin() + 1, 3); for (auto&& value : vec) { cout << value << " "; } cout << endl; vec.insert(vec.end(), 2, 50); for (auto&& value : vec) { cout << value << " "; } cout << endl; return 0; }

因为,这里需要使用 C++ 11,因此,我们在 Linux 下使用 g++ 进行编译,具体命令如下:

g++ vector.cpp -std=c++11

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

32_C STL vector insert插入元素.png

我们看到,我们使用了 insert 将元素插入到了 vector 中。

emplace插入元素

使用 emplace 给 vector 插入元素

#include <iostream> #include <vector> using namespace std; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; vector<int> vec{1, 5}; vec.emplace(vec.begin(), 3); for (auto&& value : vec) { cout << value << " "; } cout << endl; return 0; }

编译后,我们直接运行生成的二进制文件 a.out,如下图所示:

33_C STL vector emplace插入元素.png

我们看到,我们使用了 emplace 将元素添加到了 vector 中。

STL vector插入元素总结

如果我们需要向 STL 中的 vector 容器插入元素有两种方法,即,使用 insert 方法插入元素和使用 emplace 方法插入元素。