deque是一个双端队列,可以在两端进出队,支持数组表示法和随机访问。使用deque时,需要引入头文件#include<deque>.
- push_front(x)/push_back(x) x从队头或队尾入队
- pop_front()/pop_back() 从队头或队尾出队
- front()/back() 返回队头或队尾元素
- size() 返回队中的元素个数
- empty() 判断队空,若为空,则返回true
- clear() 清空双端队列
- resize() 改变大小
- insert(a,x) 在a(迭代器)位置插入数据x,返回新数据的位置
- insert(a,n,x) 在a(迭代器)位置插入n个数据x,无返回值
- insert(a,deg,end) 在a(迭代器)位置插入[deg,end)区间的数据,无返回值
- erase(deg,end) 删除[deg,end)区间(迭代器)的数据,返回下一数据的位置
- erase(a) 删除a(迭代器)位置的数据,返回下一数据的位置
它在中间或头部存数据比vector快,但是它输出某个元素需要一个一个找,较慢。
1.构造函数
#include<iostream>
#include<deque>
using namespace std;
void print(const deque<int>&d)//防止误改
{
for(deque<int>::const_iterator it=d.begin();it!=d.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}
int main()
{
deque<int>d;
for(int i=0;i<10;i++)
{
d.push_back(i);
}
for(deque<int>::iterator it=d.begin();it!=d.end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
deque<int>d2(d);
print(d2);
deque<int>d3(d.begin(),d.end());
print(d3);
deque<int>d4(10,100);
print(d4);
return 0;
}
2.赋值
//deque<int>b;
//b=a;
//b.assign(a.begin(),a.end());
//b.assign(10,100)
3.大小操作
a.resize(5); //设置向量的大小为5,默认填充值为0
a.resize(5,15);//设置向量的大小为5,默认填充值为15
4.数据存取
- at(int idx) //返回下标idx所指的数据
- 用[]直接输出
5.排序
sort(d.begin(),a.end());