std :: priority_queue的自定义比较器后面的逻辑

问题描述 投票:1回答:1

我正在尝试为以下优先级队列编写自定义比较器:

priority_queue<pair<int,int>,vector<pair<int,int>>,cmp> pq;

该对中的第一个int是键,第二个int是键的计数。我希望我的优先级队列将计数最大的那对放在顶部。

以下是满足我需要的函子:

class cmp{
public:
   bool operator()(const pair<int,int> a, const pair<int,int> b)const{
        return a.second < b.second;
    }

};

我不太明白为什么这是正确的方法。为什么比较器返回a.second < b.second而不是a.second > b.second,因为我想将计数最高的那对放在顶部?优先级队列将如何实际利用此比较器?

c++ stl
1个回答
2
投票

摘自std::priority_queue的文档:

© www.soinside.com 2019 - 2024. All rights reserved.