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

std::sort descending order with operator overloading

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

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

您可以在 std::bind:

的帮助下简单地将参数转换为 std::less
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; });
std::sort(v.rbegin(), v.rend());

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

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