定义一个结构体如下:
struct node {
int a, b, c;
};
优先队列模拟小根堆重载 > :按c大小排序
#include<bits/stdc++.h>
using namespace std;
struct node {
int a, b, c;
bool operator > (const node& W)const {
return c > W.c;
}
};
int main() {
priority_queue<node, vector<node>, greater<node> > heap;
for (int i = 9; i > 0; i--) { heap.push({ i,i,i }); }
while(heap.size()){
node t = heap.top();
heap.pop();
printf("%d %d %d\n", t.a, t.b, t.c);
}
return 0;
}
输出:
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
8 8 8
9 9 9
优先队列模拟大根堆重载 < :按c大小排序
#include<bits/stdc++.h>
using namespace std;
struct node {
int a, b, c;
bool operator < (const node& W)const {
return c < W.c;
}
};
int main() {
priority_queue<node> heap;
for (int i = 0; i < 10; i++) { heap.push({ i,i,i }); }
while(heap.size()){
node t = heap.top();
heap.pop();
printf("%d %d %d\n", t.a, t.b, t.c);
}
return 0;
}
输出:
9 9 9
8 8 8
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
sort重载 <
#include<bits/stdc++.h>
using namespace std;
struct node {
int a, b, c;
bool operator < (const node& W)const {
return c > W.c; //按从大到小排序
//return c < W.c; 按从小到大排序
}
}e[10];
int main() {
for (int i = 0; i < 10; i++) { e[i] = { i,i,i }; }
sort(e, e + 10);
for (int i = 0; i < 10; i++)printf("%d %d %d\n", e[i].a, e[i].b, e[i].c);
return 0;
}