// priority_queue using function
#include<cstdio>
#include<algorithm>
#include<queue>
#include<functional>
using namespace std;
struct node {
friend bool operator < (const node& a, const node& b) {
return a.x< b.x;
}
int x;
};
node a[10];
int main() {
//默认是从大到小
priority_queue<int> que;
for (int i = 0; i < 5; i++) {
que.push(i);
}
for (int i = 0; i < 5; i++) {
printf("%d ", que.top());
que.pop();
}
printf("\n");
//less是从大到小输出;greater是从小到大输出,greater/less 的头文件是functional
priority_queue<int, vector<int>, less*<int>> que1;
for (int i = 10; i < 15; i++) {
que1.push(i);
}
for (int i = 10; i < 15; i++) {
printf("%d ", que1.top());
que1.pop();
}
printf("\n");
/*结构体必须要对 < 重载,return...>...是从小到大;return.....<.....是从大到小;
如果对 > 重载的话,无论你return..... < 或 >都是从大到小,其实很简单,因为在对优先队列源码其实使用的是 < 。*/
priority_queue<node> que2;
node a;
for (int i = 20; i < 25; i++) {
a.x = i;
que2.push(a);
}
for (int i = 20; i < 25; i++) {
printf("%d ", que2.top());
que2.pop();
}
return 0;
}
快速掌握优先队列-代码
最新推荐文章于 2024-10-15 14:44:52 发布