gpt4 book ai didi

c++ - C++ 中更大/更小的函数对象

转载 作者:可可西里 更新时间:2023-11-01 18:36:41 29 4
gpt4 key购买 nike

我已经仔细阅读了函数对象文档以获得更多、更少的内容。虽然我确实有点了解其中的内容,但我还不明白。将按升序或降序对我的容器使用更大的排序吗?我特别困惑,因为以下两行似乎在做相反的事情。

std::priority_queue<int, std::vector<int>, std::greater<int> > q2;

for(int n : {1,8,5,6,3,4,0,9,7,2})
q2.push(n);

print_queue(p2);

这会打印 0、1、2、3、4、5、6、7、8、9。但是,

int x[10] = { 1,3,5,7,9,2,4,6,8,10 };
std::sort(x,x+10,std::greater<int>());

打印这个会得到 10, 9, 8, 7, 6, 5, 4, 3, 2, 1。

如果有人能在我的示例中描述“更好”的工作原理,而不只是说“更好”的一般工作原理,那就太好了。

最佳答案

它将是升序的,您将始终弹出队列中最小的元素。优先队列按照给定的顺序关系反向排序。

默认模板定义如下所示:

template<
class T,
class Container = std::vector<T>,
class Compare = std::less<typename Container::value_type>
> class priority_queue;

适用less<>()(lhs, rhs)获得“最大”的 rhs 元素。但在您的情况下,它将适用 greater<>()(lhs, rhs)获得“最大”的 rhs 元素(当然是最小的)。

std::sort ,另一方面,保留您给它的订单类型。所以std::less将按升序排序,std::greater降序排列。

关于c++ - C++ 中更大/更小的函数对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40826745/

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