C++ STL中的deque emplace
双端队列或Deque(Double-ended queues)是一种在两端具有扩张和收缩功能的序列式容器。它们类似于向量,但在向尾部和头部插入和删除元素时更加高效。与向量不同,连续的存储分配可能无法保证。
emplace() 函数将一个新元素插入到指定位置之前,容器的大小增加了一个。
语法:
iterator emplace(const_iterator position, value_type val);
参数: 此方法接受以下参数:
- position: 定义要在其前面插入新元素的位置。
- val: 要插入的新值。
返回值: 它返回一个指向新构造元素的迭代器。
以下示例说明了这种方法:
示例1:
#include <deque>
#include <iostream>
using namespace std;
int main()
{
// 初始化名为sample的deque
deque<int> sample = { 2, 3, 4, 5};
// 初始化迭代器
deque<int>::iterator itr;
// 在sample的第一个位置添加1,
// 因为itr指向sample的第一个位置
sample.emplace(sample.begin(), 1);
for (itr = sample.begin(); itr != sample.end(); ++itr)
// 打印sample的所有元素
cout<<*itr<<" ";
cout<<endl;
return 0;
}
输出:
1 2 3 4 5
示例2:
#include <deque>
#include <iostream>
using namespace std;
int main()
{
// 初始化名为sample的deque
deque<char> sample = { 'G', 'E', 'K', 'S'};
// 初始化迭代器
deque<char>::iterator itr = sample.begin();
// 将迭代器增加一个位置
++itr;
// 在sample的第二个位置添加E,
// 因为itr指向sample的第二个位置
sample.emplace(itr, 'E');
for (itr = sample.begin(); itr != sample.end(); ++itr)
// 打印sample的所有元素
cout<<*itr;
cout<<endl;
return 0;
}
输出:
GEEKS