这里贴下代码:
void helper() {
auto compare = [](int a, int b) {
return a < b;
};
vector<int> A = { 2, 3, 5, 6, 9, 1, 20 };
priority_queue<int, vector<int>, decltype(compare)> pq(compare, A);
sort(A.begin(), A.end(), compare);
for (auto& i : A) {
cout << i << " ";
}
cout << endl;
while (!pq.empty()) {
int x = pq.top();
pq.pop();
cout << x << " ";
}
cout << endl;
}
运行结果是:
1 2 3 5 6 9 20
20 9 6 5 3 2 1
也就是说,对于sort, a < b如果为true,那么就是升序;对于priority_queue, a < b如果为true,那么就是降序;(具体为什么就先不管了吧,肯定是定义的问题)
对于lambda的写法标黄了,基本是:
auto compare = [会用到的变量](传入的参数){函数体};
priority_queue<类型, vector<类型>, greater<类型>> pq;
priority_queue<类型, vector<类型>, decltype(lambda函数)> pq(lambda函数, 可以写上某个vector);