本文翻译自:Sorting a vector in descending order
Should I use 我应该用吗?
std::sort(numbers.begin(), numbers.end(), std::greater<int>());
or 要么
std::sort(numbers.rbegin(), numbers.rend()); // note: reverse iterators
to sort a vector in descending order? 按降序对矢量进行排序? Are there any benefits or drawbacks with one approach or the other? 一种方法或另一种方法有任何好处或缺点吗?
#1楼
参考:https://stackoom.com/question/brps/按降序对矢量进行排序
#2楼
Actually, the first one is a bad idea. 实际上,第一个是个坏主意。 Use either the second one , or this: 使用第二个 ,或者:
struct greater
{
template<class T>
bool operator()(T const &a, T const &b) const { return a > b; }
};
std::sort(numbers.begin(), numbers.end(), greater());
That way your code won't silently break when someone decides numbers should hold long or long long instead of int . 这样,当有人决定numbers应该持有多long或多long long而不是int时,你的代码不会默默地破坏。
#3楼
What about this? 那这个呢?
std::sort(numbers.begin(), numbers.end());
std::reverse(numbers.begin(), numbers.end());
#4楼
使用c ++ 14,您可以这样做:
std::sort(numbers.begin(), numbers.end(), std::greater<>());
#5楼
您可以使用Lambda函数代替Mehrdad提出的仿函数。
sort(numbers.begin(), numbers.end(), [](const int a, const int b) {return a > b; });
#6楼
您可以使用第一个或尝试下面同样有效的代码
sort(&a[0], &a[n], greater<int>());
C++降序排序技巧
本文探讨了在C++中对vector容器进行降序排序的多种方法,包括使用std::sort与不同比较器如std::greater,以及通过反转迭代器和Lambda函数实现。对比了各种方法的优缺点,特别指出在改变数据类型时代码的健壮性。
3448

被折叠的 条评论
为什么被折叠?



