deque双端队列容器
【deque的声明】
deque的头文件:#include<deque>
【deque的选择】
deque双向队列是一种双向开口的连续线性空间,可以高效的在头尾两端插入和删除元素,
deque在接口上和vector非常相似。如果只在容易的首部和尾部插入数据元素,则选择deque。
【deque的创建】
1.创建没有任何元素的deque对象
deque<int>d;
deque<float>dd;
2.创建具有n个元素的deque对象
deque<int>d(10);
3.创建具有n个元素的deque对象,并赋初值
deque<float>d(10,8.5); // 创建具有10个浮点型元素的deque对象d,每个元素值为8.5
【deque的函数】
deque<int>d;
1. d.push_back(x) 在尾部插入元素x
2. d.push_front(x) 在首部插入元素x
3. d.insert(x) 在中间插入元素x
4. d.pop_front() 删除首部元素
5. d.pop_back() 删除尾部元素
6. d.erase(pos) 删除在迭代器位置pos上的元素
7. d.clear() 清空deque对象
【deque的基本操作】
插入、删除、遍历
#include<deque>
#include<string>
#include<iostream>
using namespace std;
int main()
{
deque<int>d;
// 尾部插入push_back()
d.push_back(521);
d.push_back(2);
d.push_back(3);
// 顶部插入push_front()
d.push_front(99);
d.push_front(95);
d.push_front(90);
// 中间插入insert(x,y),x是要插入的位置在迭代器的位置,y是要查入的值
d.insert(d.begin()+3,85);
d.insert(d.end()-3,80);
// 数组形式正向输出
for(int i=0;i<d.size();i++)
cout<<d[i]<<" ";
cout<<endl;
// 迭代器形式正向输出
deque<int>::iterator it;
for(it=d.begin();it!=d.end();it++)
cout<<(*it)<<" ";
cout<<endl;
// 迭代器形式反向输出
deque<int>::reverse_iterator rit;
for(rit=d.rbegin();rit!=d.rend();rit++)
cout<<(*rit)<<" ";
cout<<endl;
// 顶部删除元素
d.pop_front();
d.pop_front();
// 尾部删除元素
d.pop_back();
d.pop_back();
// 中间删除元素,可删除区间
d.erase(d.begin(),d.end()-1);
for(it=d.begin();it!=d.end();it++)
cout<<(*it)<<" ";
cout<<endl;
// 清空deque对象
d.clear();
// 输出元素的个数
cout<<d.size()<<endl;
return 0;
}