c++ 定义优先队列排序规则
时间: 2023-10-19 10:01:28 浏览: 158
优先级队列的C++实现
在 C++ 中,你可以使用自定义的排序规则来定义优先队列(`priority_queue`)的排序方式。优先队列是一种特殊的队列,它按照指定的排序规则自动对元素进行排序。
以下是一个示例,展示如何定义优先队列的排序规则:
```cpp
#include <iostream>
#include <queue>
struct CustomComparator {
bool operator()(const int& a, const int& b) const {
// 自定义的排序规则,按照数字的绝对值进行排序
return abs(a) > abs(b); }
};
int main() {
// 使用自定义的比较函数对象来定义优先队列的排序规则
std::priority_queue<int, std::vector<int>, CustomComparator> myQueue;
// 插入一些元素
myQueue.push(5);
myQueue.push(-10);
myQueue.push(3);
myQueue.push(-7);
// 输出队列中的元素(按照自定义的排序规则)
while (!myQueue.empty()) {
std::cout << myQueue.top() << " ";
myQueue.pop();
}
std::cout << std::endl;
return 0;
}
```
在上面的示例中,我们定义了一个名为 `CustomComparator` 的结构体,它重载了圆括号操作符 `()`,用于比较两个整数。在此示例中,我们按照数字的绝对值进行排序,并且使用了逆序,即绝对值较大的元素排在前面。
然后,在 `std::priority_queue` 的模板参数中指定使用 `CustomComparator` 作为比较函数对象,这样优先队列就会按照我们定义的排序规则进行排序。
最后,我们通过循环从队列中弹出元素,并输出它们(按照自定义的排序规则)。
希望这个示例能帮助你理解如何在 C++ 中定义优先队列的排序规则!
阅读全文