我的代码可以正常使用:
auto cmp = [](int left, int right){ return left < right; };
priority_queue<int, vector<int>, decltype(cmp)> mypq(cmp);
for (int n : {3, 1, 0, 2, 4, 1, 3}) {
mypq.push(n);
}
while (!mypq.empty()) {
cout << mypq.top() << ' ';
mypq.pop();
}
// output: 4 3 3 2 1 1 0
但是我想以不同的方式设置优先级来改变lambda表达式的正文部分。例如,我如何优先考虑奇数或平方数?我尝试了一些并且可能因为'严格的弱排序'而得到运行时错误。我不应该在STL中使用priority_queue执行此操作吗?