【发布时间】:2020-09-07 06:28:15
【问题描述】:
我试图了解我的比较器应该为向量的优先级队列返回什么,我想要基于第三个元素的最小堆。
在搜索中,我发现比较器看起来像:
bool operator()(vector<int>a, vector<int> b)
{
return a[2]>b[2];
}
为什么不a[2]<b[2]?
【问题讨论】:
-
std::priority_queue首先返回最大元素。这就是它的定义方式。 -
这个比较器会让
priority_queue把最小元素放在最上面 -
对vector使用const引用而不是按值传递,你不想每次比较时都复制它们
-
cppreference 很好地解释了比较器的外观和原因。见en.cppreference.com/w/cpp/container/priority_queue
-
@flowit 起初无法理解它,但在记下几个例子后才明白它的真正含义。谢谢!
标签: c++ comparator priority-queue