day*_*yup 3 c++ priority-queue
我总是对为优先级队列容器定义比较器感到困惑,并且不知道如何理解它.例如,我有一个vector的pair<int,int>,在这里我想通过它的第二个字段值对递减排序.
所以代码看起来像这样:
struct Compare
{
bool operator()(pair<int,int> const &p1, pair<int,int> const &p2) const
{
return p1.second < p2.second;
}
};
priority_queue<pair<int,int>,vector<pair<int,int> >, Compare> pqueue;
Run Code Online (Sandbox Code Playgroud)
如何理解"<"这里的操作员,因为我认为它应该是">"第一次,并且必须根据结果进行更改.为什么"<"降序而不是">"?我只想在下次使用时第一次拍摄时才能正确使用priority_queue.谢谢.
优先级队列基于比较运算符返回顶部元素,这意味着当您逐个检索项目时,将按降序获取它们.
比较运算符的含义始终保持"小于",这意味着当compare(A, B)为真时,B具有更高的优先级A,并且将从优先级队列中更早地返回.
反转比较功能会反转从优先级队列中获取项目的顺序.具体而言,使用>代替<反转顺序升序.