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());
我有一个 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());