一、前言
deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数。
二、涉及的相关函数
函数 | 功能 |
---|---|
push_back() | 在容器现有元素的尾部添加一个元素 |
pop_back() | 移除容器尾部的一个元素 |
push_front() | 在容器现有元素的头部添加一个元素 |
pop_front() | 移除容器尾部的一个元素 |
emplace_back() | 在容器尾部生成一个元素,效率比push_back()高 |
emplace_front() | 在容器头部生成一个元素,效率比push_front()高 |
insert() | 在指定的位置直接生成一个元素 |
emplace() | 在指定的位置直接生成一个元素,效率比insert高 |
erase() | 移除一个元素或某一区域内的多个元素 |
clear() | 删除容器中所有的元素 |
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 指定的位置之前,插入初始化列表(用大括号{}括起来的多个元素,中间有逗号隔开)中所有的元素,并返回表示第一个新插入元素位置的迭代器 |
三、实例
1、添加、删除
std::deque<int> dequeInt;
dequeInt.push_back(319);
std::cout << "push_back dequeInt size: " << dequeInt.size() << std::endl;
dequeInt.pop_back();
std::cout << "pop_back dequeInt size: " << dequeInt.size() << std::endl;
dequeInt.push_front(31);
dequeInt.push_front(571);
dequeInt.push_front(910);
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "push_front dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
dequeInt.pop_front();
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "pop_front dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
dequeInt.emplace_front(1099);
dequeInt.emplace_back(7100);
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "emplace_front and emplace_back dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
dequeInt.emplace(dequeInt.begin() + 2, 4301);
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "emplace dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
dequeInt.erase(dequeInt.begin() + 2);
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "erase appoint dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
结果如下:
2、insert实例
std::deque<int> dequeInt{4301,2591,671};
std::cout << "dequeInt size: " << dequeInt.size() << std::endl;
dequeInt.insert(dequeInt.begin() + 2, 798);
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "insert1 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
std::cout << "dequeInt size: " << dequeInt.size() << std::endl;
dequeInt.insert(dequeInt.begin() + 3, 3, 9);
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "insert2 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
std::cout << "insert2 dequeInt size: " << dequeInt.size() << std::endl;
std::array<int, 3> arrayInt{ 901,756,34 };
dequeInt.insert(dequeInt.begin() + 5, arrayInt.begin(), arrayInt.end());
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "insert3 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
std::cout << "insert3 dequeInt size: " << dequeInt.size() << std::endl;
dequeInt.insert(dequeInt.begin() + 1, { 88,92,34 });
for (int i = 0; i < dequeInt.size(); i++)
{
std::cout << "insert4 dequeInt[" << i << "]=" << dequeInt[i] << std::endl;
}
std::cout << "insert4 dequeInt size: " << dequeInt.size() << std::endl;
结果如下:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。