优先级队列比较器[C ++]

问题描述 投票:0回答:1

我试图了解我的比较器在我要基于第三个元素的最小堆的情况下,对于向量的优先级队列应该返回什么。

在搜索时,我发现比较器看起来像:

bool operator()(vector<int>a, vector<int> b)
{
return a[2]>b[2];
}

为什么不a[2]<b[2]

c++ comparator priority-queue
1个回答
0
投票

最大堆是一棵二叉树,其中每个节点中包含的数据大于或等于其子节点的数据,因此叶子在队列中的值最小。在内部,优先级队列表示为最大堆并进行排序,以便可以首先访问具有最大值的节点。如果要对元素a[2]<b[2]进行排序,则可以覆盖比较器。

© www.soinside.com 2019 - 2024. All rights reserved.