关于STL仿函数的使用,更大<T>

zt5*_*840 2 c++ stl priority-queue functor

当我编写代码时,我对仿函数的使用感到困惑.

如果我想按降序对整数序列进行排序,我必须greater<int>输入第三个参数sort,例如sort(v.begin(), v.end(), greater<int>());.

但是在处理时priority_queue,我必须less<int>输入第三个参数来获得最大顶堆,例如priority_queue< int, vector <int>, less<int> > heap;.

所以我的问题是为什么我们使用两个不同的函子获得相同的提升关系?

任何人都可以解释为什么会这样吗?更好地使用STL实现的源代码让我清楚.

为我可怜的英语道歉.

非常感谢!

nic*_*kie 5

默认sort升序排序,使用"less-than"作为比较元素的严格弱排序.默认priority_queue保证顶部元素是最大元素(即按降序 "排序" ),再次使用"less-than"作为比较元素的严格弱排序.如果要反转语义,在这两种情况下,您可以使用"更大"而不是默认的"小于",作为严格的弱排序.