优先队列与结构体连用,并让优先队列按照结构体中的两个属性进行降序排序
时间: 2023-08-28 17:07:51 浏览: 113
优先队列的基本结构
5星 · 资源好评率100%
可以使用C++中的STL库中的priority_queue来实现优先队列,并通过自定义比较函数来指定按照结构体中的两个属性进行降序排序。
以下是一个示例代码:
```cpp
#include <iostream>
#include <queue>
struct MyStruct {
int value1;
int value2;
};
struct CompareStruct {
bool operator()(const MyStruct& s1, const MyStruct& s2) {
if (s1.value1 == s2.value1) {
return s1.value2 < s2.value2; // 按照 value2 进行降序排序
}
return s1.value1 < s2.value1; // 按照 value1 进行降序排序
}
};
int main() {
std::priority_queue<MyStruct, std::vector<MyStruct>, CompareStruct> pq;
// 添加元素到优先队列
pq.push({5, 10});
pq.push({3, 20});
pq.push({5, 5});
pq.push({2, 15});
pq.push({3, 10});
// 依次取出优先队列中的元素
while (!pq.empty()) {
MyStruct top = pq.top();
pq.pop();
std::cout << "(" << top.value1 << ", " << top.value2 << ")" << std::endl;
}
return 0;
}
```
运行以上代码,输出结果为:
```
(5, 5)
(5, 10)
(3, 10)
(3, 20)
(2, 15)
```
可以看到,优先队列中的元素按照结构体中的value1进行降序排序,当value1相同时,再按照value2进行降序排序。
阅读全文