C中更大/更小的函数对象

前端之家收集整理的这篇文章主要介绍了C中更大/更小的函数对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经通过函数对象文档了解更多,更少.虽然我有点理解其中的内容,但我还没有得到它.是否会按升序或降序对我的容器进行更大的排序?我特别困惑,因为以下两行似乎在做相反的事情.
std::priority_queue<int,std::vector<int>,std::greater<int> > q2;

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

print_queue(p2);

这打印0,1,2,9.但是,

int x[10] = { 1,10 };
std::sort(x,x+10,std::greater<int>());

打印这将给出10,1.

如果有人能够在我的例子中描述“更大”的作用,那将是很好的,而不仅仅是说“更大”的作用.

解决方法

它将升序,您将始终弹出队列中的最小元素.优先级队列的排序与给定的顺序关系相反.

默认模板定义如下所示:

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

它应用较少的<>()(lhs,rhs)来获得“最大”的rhs元素.但在你的情况下,它将应用更大的<>()(lhs,rhs)来获得“最大”的rhs元素(当然它将是最小的).

另一方面,std :: sort保留了您提供的订单类型.所以std :: less将按升序排序,std :: greater按降序排序.

猜你在找的C&C++相关文章