c++ 优先队列排列键值对
时间: 2023-12-30 21:24:05 浏览: 31
在C++中,可以使用优先队列来排列键值对。下面是一个示例代码:
```cpp
#include <iostream>
#include <queue>
#include <vector>
struct Node {
int key;
int value;
};
struct CompareNode {
bool operator()(const Node& n1, const Node& n2) {
return n1.value < n2.value;
}
};
int main() {
std::map<int, int> mp = {{1, 10}, {2, 20}, {3, 30}};
std::priority_queue<Node, std::vector<Node>, CompareNode> pq;
for (auto e : mp) {
pq.push({e.first, e.second});
}
while (!pq.empty()) {
Node node = pq.top();
pq.pop();
std::cout << "Key: " << node.key << ", Value: " << node.value << std::endl;
}
return 0;
}
```
这段代码首先定义了一个结构体`Node`,其中包含了键值对的`key`和`value`。然后定义了一个比较函数`CompareNode`,用于指定优先队列的排序方式,这里按照`value`的大小进行排序。
接下来,创建了一个`std::priority_queue`类型的优先队列`pq`,并将键值对依次放入队列中。最后,通过循环从队列中取出元素,并输出键值对的信息。
运行上述代码,将会按照键值对的`value`值从大到小的顺序输出结果。