您的位置:首页 > 其它

sdut 双向队列(STL)

2016-11-20 17:15 232 查看
deque<ll>q;//定义一个双向队列q,类型为long long
q.push_front(a);//将a从队首插入队列
q.push_back(a);//将a从队尾插入队列
q.pop_front();//队首弹掉一个元素
q.pop_back();//队尾弹出一个元素
a=q.front();//返回队首元素
a=q.back();//返回队尾元素
a=q.size();//返回双向队列的大小
a=q.empty();//判断双向队列是否为空,为空返回1,不为空返回0
deque<ll>p(q);//将队列q复制一个新的队列p
q.clear(); //将队列q清空

C++ Double Ended Queues(双向队列)

双向队列和向量很相似,但是它允许在容器头部快速插入和删除(就像在尾部一样)。

Constructors创建一个新双向队列
Operators比较和赋值双向队列
assign()设置双向队列的值
at()返回指定的元素
back()返回最后一个元素
begin()返回指向第一个元素的迭代器
clear()删除所有元素
empty()返回真如果双向队列为空
end()返回指向尾部的迭代器
erase()删除一个元素
front()返回第一个元素
get_allocator()返回双向队列的配置器
insert()插入一个元素到双向队列中
max_size()返回双向队列能容纳的最大元素个数
pop_back()删除尾部的元素
pop_front()删除头部的元素
push_back()在尾部加入一个元素
push_front()在头部加入一个元素
rbegin()返回指向尾部的逆向迭代器
rend()返回指向头部的逆向迭代器
resize()改变双向队列的大小
size()返回双向队列中元素的个数
swap()和另一个双向队列交换元素
开始理解错题意WA了N多次。。。。:



#include<iostream>
#include<deque>
#include<string>
using namespace std;

int main()
{
deque<int> deq;
int n,l=0,p=0,m[10000];
cin>>n;
string s;
for(int i=1;i<=n;i++)
{
cin>>s;
if(s=="LIN")
{
int d;
cin>>d;
deq.push_front(d);
}
else if(s=="RIN")
{
int d;
cin>>d;
deq.push_back(d);
}
else if(s=="LOUT")
{
if(deq.empty())
m[p++]=i;
else
{
//a[l++]=deq.front();
deq.pop_front();
}
}
else if(s=="ROUT")
{
if(deq.empty())
m[p++]=i;
//cout<<i<<" "<<"ERROR"<<endl;
else
{
deq.pop_back();
}

}
else
m[p++]=i;
}
if(!deq.empty())
{
cout<<deq.front();
deq.pop_front();
}
while(!deq.empty())
{
cout<<" "<<deq.front();
deq.pop_front();
}
cout<<endl;
for(int i=0;i<p;i++)
{
cout<<m[i]<<" "<<"ERROR"<<endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: