我有一个std::vector
的对象,我重载了<
运算符。
如何使用std::sort
按降序对其进行排序(无需编写自己的比较器)?
答案 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());