gpt4 book ai didi

c++ - C++优先级队列容器比较器中如何直观理解大于/小于运算符

转载 作者:太空狗 更新时间:2023-10-29 20:36:24 28 4
gpt4 key购买 nike

我总是对为优先级队列容器定义比较器感到困惑,不知道如何理解它。例如,我有一个 vectorpair<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 时在第一次拍摄时就把它弄好.谢谢你。

最佳答案

优先级队列根据比较运算符返回顶部元素,这意味着当您一个接一个地检索项目时,您将按降序顺序获取它们。

比较运算符的含义始终是“小于”,意思是当compare(A, B)是真的,B优先级高于 A , 并且会更早地从优先级队列中返回。

反转比较函数会反转您从优先级队列中获取项目的顺序。具体来说,使用 >代替 <将顺序反转为升序

关于c++ - C++优先级队列容器比较器中如何直观理解大于/小于运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38819467/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com