我应该使用什么?
std::sort(numbers.begin(), numbers.end(), std::greater<int>());
或者std::sort(numbers.rbegin(), numbers.rend()); // note: reverse iterators
如何将向量按降序排序?其中一种方法是否比另一种方法更有优势或劣势?
我认为您不应该使用问题中的任何一种方法,因为它们都很令人困惑,而且第二种方法像Mehrdad所建议的那样很脆弱。
我提倡以下方法,因为它看起来像一个标准库函数,并清晰地表达其意图:
#include <iterator>
template <class RandomIt>
void reverse_sort(RandomIt first, RandomIt last)
{
std::sort(first, last,
std::greater<typename std::iterator_traits<RandomIt>::value_type>());
}
std::greater
比较器要复杂一千倍... - Apollys supports Monicastd::ranges::sort(numbers, std::ranges::greater());
std::sort(numbers.end(), numbers.begin(), std::greater<>());
std::sort(numbers.begin(), something_else.end(), std::greater<>());
std::sort(b, e);
将最小值放在b
(在我们的情况下是rbegin
,即 最后 一个元素),将最大值放在e
(在我们的情况下是rend
,即 第一个 元素)。 - fredoverflow