Ash*_*ran 7 c++ sorting functor
我已经通过函数对象文档了解更多,更少.虽然我有点理解其中的内容,但我还没有得到它.我的容器会按升序或降序排序吗?我特别困惑,因为以下两行似乎在做相反的事情.
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);
Run Code Online (Sandbox Code Playgroud)
这会打印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>());
Run Code Online (Sandbox Code Playgroud)
打印这将给出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;
Run Code Online (Sandbox Code Playgroud)
它适用less<>()(lhs, rhs)于获取“最大”的 rhs 元素。但就您而言,它将适用greater<>()(lhs, rhs)于获取“最大”rhs 元素(当然是最小的)。
std::sort另一方面,保留您提供的订单类型。因此std::less将按升序排序,并按std::greater降序排序。
| 归档时间: |
|
| 查看次数: |
865 次 |
| 最近记录: |