优先队列的构造

来源:互联网 发布:笔记本电脑录视频软件 编辑:程序博客网 时间:2024/05/24 06:14
 第一种:
#include <cstdio>#include <queue>#include <cstring>#include <algorithm>using namespace std;struct node{    int x,y;    bool operator < (const node &a) const    {        return x>a.x;//最小值优先    }};struct node1{    int x,y;    bool operator < (const node1 &a) const    {        return x<a.x;//最大值优先    }};int main(){    priority_queue<node> q;    priority_queue<node1> q1;}

第二种:

#include <cstdio>#include <queue>#include <cstring>#include <algorithm>using namespace std;struct cmp{    bool operator ()(int a,int b)    {        return a>b;//最小值优先    }};struct cmp1{    bool operator ()(int a,int b)    {        return a<b;//最大值优先    }};int main(){    priority_queue<int,vector<int>,cmp> q;    q.push(9);    q.push(5);    q.push(12);    printf("%d",q.top());    priority_queue<int,vector<int>,cmp1> q1;}




#include <cstdio>#include <cstring>#include <queue>using namespace std;struct node{    int x,y;};struct cmp{    bool operator()(const node&a,const node&b)    {        if(a.x!=b.x)            return a.x<b.x;        return a.y<b.y;    }};//根据x从大到小,y从大到小,队列是相反的,set是正的priority_queue<node,vector<node>,cmp> h;int main(){    h.push({14,6});    h.push({9,8});    h.push({9,5});    printf("%d\n",h.top().x);    h.pop();    printf("%d\n",h.top().y);}


0 0