我总是对为优先级队列容器定义比较器感到困惑,并且不知道如何理解它。
例如,我有一个vector
of 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;
如何理解运营商"<"
在这里,因为我认为应该是">"
第一次,必须根据结果进行更改。为什么"<"
降序排列而不是">"
?我只想下次使用时第一次拍摄就正确priority_queue
。谢谢。
优先级队列返回top基于比较运算符的元素,这意味着当您一项一项地检索项目时,您将获得它们下降 order.
比较运算符的含义始终不变“少于”,这意味着当compare(A, B)
是真的,B
优先级高于A
,并且会更早地从优先级队列中返回。
反转比较函数会反转您从优先级队列中获取项目的顺序。具体来说,使用>
代替<
将顺序颠倒为上升.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)