优先队列模板

优先队列模板:

#include<iostream>
#include<queue>
using namespace std;
struct node{
    friend bool operator<(node n1,node n2)
    {
        if(n1.num1<n2.num1)//从小到大排序的,与快排刚好相反
            return 0;
        else if(n1.num1==n2.num1&&(n1.num2<n2.num2))
            return 0;
        else
            return 1;
    }
    int num1;
    int num2;
};
int main()
{
    int n,m;
    node temp;
    priority_queue<node>Q;//这里要注意的是有的时候队列要清空
    while(scanf("%d%d",&n,&m)!=EOF&&n||m)
    {
        temp.num1=n;
        temp.num2=m;
        Q.push(temp);
    }
    while(!Q.empty())
    {
        temp=Q.top();
        printf("%d %d\n",temp.num1,temp.num2);
        Q.pop();
    }
    return 0;
}
原文地址:https://www.cnblogs.com/jiangjing/p/3070279.html