std :: sort降序与运算符重载

时间:2016-07-14 18:52:54

标签: c++ sorting c++11 std

我有一个std::vector的对象,我重载了<运算符。

如何使用std::sort按降序对其进行排序(无需编写自己的比较器)?

3 个答案:

答案 0 :(得分:7)

您可以在std::less的帮助下将参数转换为std::bind

using namespace std::placeholders;
std::sort(v.begin(), v.end(), std::bind(std::less<T>{}, _2, _1));

但我认为简单地编写等效的短lambda会更加清晰,即使它违背了不写自己的比较器的限制:

std::sort(v.begin(), v.end(), [](T const& lhs, T const& rhs) { return rhs < lhs; });

答案 1 :(得分:2)

std::sort(v.rbegin(), v.rend());

答案 2 :(得分:0)

您可以使用std::sort对数组进行排序,然后使用std::reverse将其反转。这将以您想要的方式排序。

std::sort(v.begin(), v.end());
std::reverse(v.begin(), v.end());