使用lambda表达式priority_queue自定义排序
时间: 2023-10-19 17:17:16 浏览: 49
非常棒的问题!使用lambda表达式可以方便地自定义priority_queue的排序方法。以下是一个简单的例子,演示如何将数字从大到小排序:
```
#include <iostream>
#include <queue>
using namespace std;
int main() {
priority_queue<int, vector<int>, function<bool(int, int)>> q([](int a, int b) { return a < b; });
q.push(1);
q.push(3);
q.push(2);
while (!q.empty()) {
cout << q.top() << endl;
q.pop();
}
return 0;
}
```
在上面的例子中,我们定义了一个priority_queue,使用vector存储元素,排序时依赖于一个lambda表达式。lambda表达式的参数为两个int类型的数字,返回值为bool类型,表示a是否小于b。使用function<bool(int, int)>作为第三个参数可以指定lambda表达式的类型。
当运行上面的程序时,我们可以看到输出结果为:
```
3
2
1
```
从输出结果可以看出,priority_queue按照我们定义的lambda表达式对数字进行了从大到小的排序。
希望这个例子可以帮助您理解如何使用lambda表达式自定义priority_queue的排序方法!