按降序对矢量进行排序c ++ [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了按降序对矢量进行排序c ++ [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我试图按照学生的平均分数降序排序矢量,但我不知道这样做的正确方法是什么? 。现在是我的代码。

          void sortDes()
       {
       int len = students.size();
       for(int i = 0; i < len; i++)
       {
            for(int j = 0;j < len - 1; j++)
            {
              if(students[j].average()> students[j+1].average())
               {

                swap(students[j+1], students[j]);
               }
             }
        } 

       }
答案

std::sort一样使用std::greater

#include <functional>
#include <vector>
#include <algorithm>
int main()
{
    std::vector<int> Vec {2,5,4,8,1,2,2};
    std::sort(Vec.begin(), Vec.end(), std::greater<int>());// After sort will be 8,5,4,2,2,2,1
    return 0;
}

在你的情况下,它将是:

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

对于您的CStudent覆盖运算符>如下所示:

class CStudent
{
public:
    bool operator > (CStudent& cmp1)
    {
        //Do your own calculations here
        if ( cmp1.val < val )
        {
            return true;
        }

        return false;
    }
private:
    int val;
};

然后用lambda调用sort:

//...
    std::sort(Vec.begin(), Vec.end(), [](CStudent& cmp1, CStudent& cmp2  )->bool{return cmp1 > cmp2;});
//...

以上是关于按降序对矢量进行排序c ++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何根据特定值按降序对数组进行排序[重复]

根据值按降序对 Map<Key,Value> 进行排序 [重复]

按特定键的降序对字典列表进行排序[重复]

Firebase 按降序对数据进行排序。 (只排序了一半。)

如何按值按降序对哈希进行排序并在 ruby​​ 中输出哈希?

按降序对数组进行排序的更好方法