【问题标题】:What is the best way of descending sort? [duplicate]降序排序的最佳方法是什么? [复制]
【发布时间】:2013-03-11 15:59:53
【问题描述】:

所有,

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

谢谢。

【问题讨论】:

标签: c++ sorting stl


【解决方案1】:

编写一个函数进行比较:

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

然后要排序,比如vector vec,调用sort(vec.begin(), vec.end(), comp)

【讨论】:

  • 我正在排序一个定制的对象,它有一个比较器。
  • @Igor 它是否以您想要的方式进行比较?如果没有,你可以再写一个。
【解决方案2】:

如果您要对ints 进行排序,例如在[begin, end) 范围内:

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

std::greater 是一个二进制函数对象,它将&gt; 应用于其操作数。您也可以提供一个 lambda 表达式:

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

【讨论】:

  • 不,我正在排序定制对象,而不是原始对象。
  • @Igor 然后你需要传递一个函数对象(可能是上面的 lambda),它接受两个 const T&amp; 参数(其中 T 是你的类型)并返回 true 如果第一个小于第二个。
  • 这就是我所做的: struct Sorter { bool operator()(const CObj &obj1, const CObj &obj2) { return obj1.m_num
  • @Igor:如果将您的对象与operator&lt; 进行比较有意义,您可以实现该运算符。 (与operator&gt;operator==operator&gt;= 等相同;相互实现它们。)然后std::greater&lt;CObj&gt; 将做正确的事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-19
  • 2021-06-09
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多