c++优先队列自定义
时间: 2023-11-03 07:56:37 浏览: 118
自定义C++队列类
优先队列是一种特殊的队列,其中的元素按照一定的优先级进行排序。C++中的优先队列可以通过自定义比较函数来实现自定义优先级。
在C++中,可以使用函数指针、结构体或类来定义比较函数。以下是三种常见的方式:
1. 使用函数指针:可以定义一个lambda表达式作为比较函数,并将其作为第三个参数传递给priority_queue构造函数。例如:
```cpp
auto cmp = [](vector<int>& a, vector<int>& b) -> bool {
return a[0] > b[0];
};
priority_queue<vector<int>, vector<vector<int>>, decltype(cmp)> q(cmp);
```
2. 使用结构体:可以通过重载()操作符来定义一个函数对象,然后将该对象作为第三个参数传递给priority_queue构造函数。例如:
```cpp
struct cmp {
bool operator()(vector<int>& a, vector<int>& b) {
return a[0] > b[0];
}
};
priority_queue<vector<int>, vector<vector<int>>, cmp> q;
```
3. 使用类:类似于结构体,可以通过重载()操作符来定义一个函数对象,并将其作为第三个参数传递给priority_queue构造函数。例如:
```cpp
class cmp {
public:
bool operator()(vector<int>& a, vector<int>& b) {
return a[0] > b[0];
}
};
priority_queue<vector<int>, vector<vector<int>>, cmp> q;
```
以上三种方式都可以实现自定义的优先队列,其中cmp为自定义的比较函数对象。
阅读全文