头文件:
<queue>
声明:
数据大的优先级高:priority_queue<int> que; //数据类型为int型,que为变量名
数据小的优先级高:priority_queue<int, vector<int>, greater<int> > que; //数据类型为int型
数据类型为结构体:priority_queue<node> que;
#include <queue>
#include <iostream>
#include <cstdio>
using namespace std;
typedef struct node
{
int weight;
int value;
}SS;
bool operator<(const node &a,const node &b)
{
if(a.weight==b.weight) return a.value>b.value;
else return a.weight>b.weight;
}
int main()
{
priority_queue<node> que;
int n;
cin>>n;
SS s[55];
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
s[i].weight=x;
s[i].value=y;
que.push(s[i]);
}
while(!que.empty())
{
printf("%d %d\n",que.top().weight,que.top().value);
que.pop();
}
return 0;
}
函数:
empty() //判断队列是否为空,为空返回true,不为空返回false
top() //返回值为队列的队首元素
push() //void型函数,无返回值,将元素入队,如que.push(1024);将1024入队
pop() //将队首元素删除
size() //返回值为队列的元素个数