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

标签 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实现的源代码来让我清楚。

为我糟糕的英语道歉。

非常感谢!

最佳答案

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

关于c++ - 关于STL仿函数的使用,更大的<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18557282/

相关文章:

C++ Palindrome Creator 递归程序

c++ - 在 C++ 中透明地交换指向字符数组的指针

c++ - 在这种情况下,为什么 STL priority_queue 并不比 multiset 快多少?

c++ - 在protobuf中,copyFrom优先于赋值吗?

套接字编程中的 C++ 字节顺序

c++ - 为什么使用一个 vs 另一个 : `boost::shared_array` VS `boost::shared_ptr<std::vector>` ?

c++ - 在 std::for_each 中传递 vector 位置

c++ - 成员变量和STL算法

c++ - 将 new 用于结构 C++ 时出现 Bad_alloc 异常

java - 内部类中对象的 PriorityQueue - 找不到构造函数