priority_queue 结构体类型

来源:互联网 发布:忻州网络第一传媒 编辑:程序博客网 时间:2024/05/14 13:41

记录一下,以后不能忘了!!

如果priority_queue插入结构体类型的变量,需要重载<运算符

有两种重载<运算符方式:
1.在结构体内部写重载

举例:

#include<cstdio>#include<queue>using namespace std;struct Node{    int a, b;    bool operator <(const Node &x)const    {        return a < x.a;    }}node[100];int main(){    priority_queue<Node> que;    int N;    scanf("%d",&N);     for(int i=0; i<N; i++)    {        scanf("%d%d",&node[i].a, &node[i].b);        que.push(node[i]);    }    printf("\n");    while(!que.empty())    {        Node u = que.top(); que.pop();        printf("%d %d\n",u.a, u.b);    }    return 0;}

2.在结构体外部写重载
举例:

#include<cstdio>#include<queue>using namespace std;struct Node{    int a, b;}node[100];bool operator <(const Node &x, const Node &y){    return x.a < y.a;}int main(){    priority_queue<Node> que;    int N;    scanf("%d",&N);     for(int i=0; i<N; i++)    {        scanf("%d%d",&node[i].a, &node[i].b);        que.push(node[i]);    }    printf("\n");    while(!que.empty())    {        Node u = que.top(); que.pop();        printf("%d %d\n",u.a, u.b);    }    return 0;}

这样优先队列的优先级就重写好了。重载根据自己要求写就行。


运行图:
这里写图片描述

0 0