2013-03-21 83 views
0

ALL,降序排序的最佳方式是什么?

std :: sort()会按升序排序。 有没有一种简单,方便,快速的降序排序方式?

谢谢。

+1

['标准::更大<> '](http://en.cppreference.com/w/cpp/utility/functional/greater) – chris 2013-03-21 22:32:34

+0

http://stackoverflow.com/questions/9025084/sorting-a-vector-in-descending-order显示你2方式 – user93353 2013-03-21 22:34:06

+0

@ user93353,谢谢。因为我不使用基元,但是我可能会使用第二种方法来创建自定义对象。 (我希望我可以接受你的答案。) – Igor 2013-03-21 23:35:15

回答

7

如果要排序int S,比方说,在范围[begin, end)

std::sort(begin, end, std::greater<int>()); 

std::greater是适用>其操作数的二元函数对象。你可以或者提供一个lambda表达式:

std::sort(begin, end, [](int a, int b) { return a > b; }); 
+0

不,我正在排序一个自定义的对象,而不是一个原始对象。 – Igor 2013-03-21 23:25:18

+0

@Igor然后你需要传递一个函数对象(可能是上面的lambda),它需要两个'const T&'参数(其中'T'是你的类型),如果第一个小于第二个参数则返回'true' 。 – 2013-03-21 23:28:45

+0

这就是我所做的:struct Sorter {bool operator()(const CObj&obj1,const CObj&obj2){return obj1.m_num Igor 2013-03-21 23:46:39

2

写一个函数来比较:

bool comp(int a, int b) 
{ 
    return a > b; 
} 

然后进行排序,比如说,一个vector vec,叫sort(vec.begin(), vec.end(), comp)

+0

我正在排序一个自定义的对象,它有一个比较器。 – Igor 2013-03-21 23:26:26

+0

@Igor比较你想要的方式吗?如果没有,你可以随时写另一个。 – tianz 2013-03-21 23:46:05

相关问题