【发布时间】:2013-03-11 15:59:53
【问题描述】:
所有,
std::sort() 将按升序排序。 有没有一种简单、方便、快速的降序排序方式?
谢谢。
【问题讨论】:
-
stackoverflow.com/questions/9025084/… 向您展示 2 种方式
-
@user93353,谢谢。由于我不使用原语,而是定制对象,我可能会使用第二种方式。 (我希望我能接受你的回答。)
所有,
std::sort() 将按升序排序。 有没有一种简单、方便、快速的降序排序方式?
谢谢。
【问题讨论】:
编写一个函数进行比较:
bool comp(int a, int b)
{
return a > b;
}
然后要排序,比如vector vec,调用sort(vec.begin(), vec.end(), comp)
【讨论】:
如果您要对ints 进行排序,例如在[begin, end) 范围内:
std::sort(begin, end, std::greater<int>());
std::greater 是一个二进制函数对象,它将> 应用于其操作数。您也可以提供一个 lambda 表达式:
std::sort(begin, end, [](int a, int b) { return a > b; });
【讨论】:
const T& 参数(其中 T 是你的类型)并返回 true 如果第一个小于第二个。
operator< 进行比较有意义,您可以实现该运算符。 (与operator>、operator==、operator>= 等相同;相互实现它们。)然后std::greater<CObj> 将做正确的事情。