c++优先队列自定义排序
时间: 2023-12-02 14:42:29 浏览: 103
下面是一个示例,演示如何在C++中使用优先队列进行自定义排序:
```cpp
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
struct Node {
int val;
int priority;
Node(int v, int p) : val(v), priority(p) {}
};
struct cmp {
bool operator()(Node a, Node b) {
return a.priority < b.priority;
}
};
int main() {
priority_queue<Node, vector<Node>, cmp> q;
q.push(Node(1, 2));
q.push(Node(2, 1));
q.push(Node(3, 3));
while (!q.empty()) {
cout << q.top().val << " ";
q.pop(); }
return 0;
}
```
在这个示例中,我们定义了一个结构体Node,其中包含一个值val和一个优先级priority。我们还定义了一个比较函数cmp,用于比较两个Node的优先级。最后,我们使用priority_queue来存储Node,并将cmp作为第三个参数传递给priority_queue,以便使用自定义的比较函数进行排序。
阅读全文