代码(最简单的一种情况)
#include <bits/stdc++.h>
using namespace std;
struct node{
int x, y, times;
friend bool operator < (node a, node b){
return a.times > b.times;//重载小于号使得小的先出队列
}
}Node[100];
priority_queue<node> q;
int main(){
int n; cin >> n;
for(int i = 1; i <= n; i++){
cin >> Node[i].x >> Node[i].y >> Node[i].times;
q.push(Node[i]);
}
for(int i = 1; i <= n; i++){
printf("%d\n", q.top().times);
q.pop();
}
return 0;
}
解释
如果要按照point中的times进行从小到大排列,则对 < 运算符重载。
意思是如果a.times > b.times成立,那么结构体point a < point b成立。
由于优先队列是按照从大到小排列,所以结构体b会排列到a之前,优先出队列,而b.times是最小的,所以也就实现了按照times的从小到大排序。
如果想要按times从大到小排序,则把代码中的大于号改成小于号即可。
参考来源
博客
https://blog.csdn.net/riba2534/article/details/53450085