这里记一下STL的队列和栈。
队列。
头文件<queue>,操作有pop,push,front,empty,size,back,声明是queue<数据类型>q。
更有用的是优先队列。
头文件同队列,操作有pop,push,top,empty,size,声明是priority_queue<数据类型>q。
需要学习的是一些cmp的写法,现在习惯写在数据里面,还在学习中。。。
hdu1509为模板题。
#include <cstdio>
#include <queue>
using namespace std;
int co;
char s[40];
struct node
{
char name[20];
int num,pri,ID;
bool operator < (const node &k) const
{
if(k.pri!=pri) return pri>k.pri;
else return num>k.num;
}
}p;
priority_queue<node>q;
int main()
{
while(scanf("%s",s)!=EOF)
{
if(s[0]==‘P‘)
{
scanf("%s%d%d",p.name,&p.ID,&p.pri);
++co;
p.num=co;
q.push(p);
}else
{
if(q.empty()) printf("EMPTY QUEUE!\n");
else
{
p=q.top();
q.pop();
printf("%s %d\n",p.name,p.ID);
}
}
}
return 0;
}
栈。
头文件是<stack>。操作有pop,push,top,empty,size,声明是stack<数据类型>s。
原文:http://www.cnblogs.com/cons/p/5188072.html