我正在尝试为以下优先级队列编写自定义比较器:
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
,因为我想将计数最高的那对放在顶部?优先级队列将如何实际利用此比较器?
摘自std::priority_queue
的文档: