【问题标题】:Problem with converting map to priority queue将地图转换为优先级队列的问题
【发布时间】:2020-07-28 10:11:35
【问题描述】:

请帮帮我,为什么它不起作用?

我想将 map 转换为对的优先级队列,它将按第二个参数排序。

auto cmp = [](pair<int, int>& p1, pair<int, int>& p2) {return p1.second > p2.second;};

priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(cmp)> q;

map<int, int> m{{1,1}, {2,3}, {4,100}};

for (auto a : m)
    q_.push(a);

我想按优先级 {{4,100}、{2,3}、{1,1}} 的降序获得这样的 pq。

【问题讨论】:

标签: c++ dictionary priority-queue std-pair


【解决方案1】:

把你的代码改成这个

priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(cmp)> q(cmp);

Lambda 函数没有默认构造函数(至少在某些 C++ 版本中),真实情况似乎很复杂。 https://en.cppreference.com/w/cpp/language/lambda

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 2016-09-23
    • 1970-01-01
    相关资源
    最近更新 更多