- 可以访问和修改队首队尾的支持sort的容器
STL
-
deque<类型>名称
-
方法:
clear():清空
front():返回队首值
back():返回队尾值
push_fornt(val):队首插入值
push_back(val):队尾插入值
pop_front():移除队首值
pop_back():移除队尾值
size():返回容器中元素个数
empty():判断容器是否为空
begin():返回其实迭代器(指针)
end():返回末尾迭代器
insert(pos,val):在迭代器位置插入值
erase(pos):去除迭代器位置
支持sort,cmp,也可以在结构体中直接重载小于号
- 附一道模拟题
- 简单数据结构
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
int n,m,rev=0;
deque<int> a;
scanf("%d%d",&n,&m);
for(int i=0;i<m;i++){
int tp,v;
scanf("%d",&tp);
switch (tp){
case 1:
scanf("%d",&v);
if(rev%2==0) a.push_front(v);
else a.push_back(v);
break;
case 2:
if(rev%2==0) a.pop_front();
else a.pop_back();
break;
case 3:
scanf("%d",&v);
if(rev%2==1) a.push_front(v);
else a.push_back(v);
break;
case 4:
if(rev%2==1) a.pop_front();
else a.pop_back();
break;
case 5:
rev++;
break;
case 6:
printf("%d\n",a.size());
if(rev%2==0){
for(int i=0;i<a.size();i++){
printf("%d ",*(a.begin()+i));
}
}
else{
for(int i=1;i<=a.size();i++){
printf("%d ",*(a.end()-i));
}
}
printf("\n");
break;
case 7:
if(rev%2==0) sort(a.begin(),a.end());
else sort(a.begin(),a.end(),cmp);
}
}
return 0;
}