将映射转换为优先级队列的问题
Problem with converting map to priority queue
请帮助我,为什么它不起作用?
我想将 map 转换为 pairs 的优先级队列,它将按第二个参数排序。
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。
将您的代码更改为此
priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(cmp)> q(cmp);
Lambda 函数没有默认构造函数(至少在某些 C++ 版本中),真实情况似乎很复杂。 https://en.cppreference.com/w/cpp/language/lambda
请帮助我,为什么它不起作用?
我想将 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。
将您的代码更改为此
priority_queue<pair<int, int>, vector<pair<int, int>>, decltype(cmp)> q(cmp);
Lambda 函数没有默认构造函数(至少在某些 C++ 版本中),真实情况似乎很复杂。 https://en.cppreference.com/w/cpp/language/lambda