1.STL queue的主要操作如下
(1)queue<type>q :定义队列,type为数据类型,如int,float,char等。
(2)q.push(item):把item放进队列。
(3)q.pop():删除队首元素。
(4)q.front():返回队首元素,但不会删除。
(5)q.back():返回队尾元素。
(6)q.size():返回元素个数。
(7)q.empty():检查队列是否为空。
2.用下面的例题给出STL queue的代码实现。(请读者自己到相关网站查阅题目)
例1 B3616 【模板】队列(洛谷)
下面是代码
#include<bits/stdc++.h>
using namespace std;
queue<int>q;
int n;
int main()
{
cin>>n;
while(n--)
{
int a,b; cin>>a;
if(a==1) cin>>b, q.push(b);
if(a==2)
{
if(q.size()==0) cout<<"ERR_CANNOT_POP"<<endl; //也可以用if(q.empty()) cout<<...
else q.pop();
}
if(a==3)
{
if(q.size()==0) cout<<"ERR_CANNOT_QUERY"<<endl; //也可以用if(q.empty()) cout<<...
else cout<<q.front()<<endl;
}
if(a==4)
cout<<q.size()<<endl;
}
}
例2 洛谷P1540 [NOIP2010 提高组] 机器翻译
代码如下
#include<bits/stdc++.h>
using namespace std;
int Hash[1005]={0};
queue<int>q;
int main()
{
int m,n;
cin>>m>>n;
int cnt=0;
while(n--)
{
int word;cin>>word;
if(!Hash[word])
{
q.push(word);
Hash[word]=1;
cnt++;
while(q.size()>m)
{
Hash[q.front()]=0;
q.pop();
}
}
}
cout<<cnt;
}