如何在priority_queue中定义各种比较?

时间:2017-03-01 03:47:14

标签: c++ stl priority-queue

我的代码可以正常使用:

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执行此操作吗?

0 个答案:

没有答案