如果我们需要向 STL 中的 vector 容器插入元素有两种方法,即,使用 insert 方法插入元素和使用 emplace 方法插入元素。
语法格式 | 用法说明 |
---|---|
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 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器。 |
iterator emplace (const_iterator pos, args...);
参数 | 描述 |
---|---|
pos | 需要插入的位置。 |
args… | 表示与新插入元素的构造函数相对应的多个参数;该函数会返回表示新插入元素位置的迭代器。 |
emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。emplace() 每次只能插入一个元素,而不是多个。
使用 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
,如下图所示:
我们看到,我们使用了 insert 将元素插入到了 vector 中。
使用 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
,如下图所示:
我们看到,我们使用了 emplace 将元素添加到了 vector 中。
如果我们需要向 STL 中的 vector 容器插入元素有两种方法,即,使用 insert 方法插入元素和使用 emplace 方法插入元素。