第一种:
#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);
}