117.info
人生若只如初见

C++ List Sort 对多字段如何排序

C++ 的 std::sort 函数和 lambda 表达式可以用来对多字段进行排序。

假设我们有一个存储学生信息的结构体 Student,其中包含学生的姓名、年龄和成绩:

struct Student {
    std::string name;
    int age;
    double score;
};

我们可以使用 std::sort 对这个结构体数组进行排序。假设我们需要首先按照分数降序排序,如果分数相同则按照年龄升序排序,如果年龄也相同则按照姓名字典序排序:

#include 
#include 
#include 

struct Student {
    std::string name;
    int age;
    double score;
};

int main() {
    std::vector students = {
        {"Alice", 20, 85.5},
        {"Bob", 22, 90.0},
        {"Alice", 18, 85.5},
        {"Bob", 22, 85.5}
    };

    std::sort(students.begin(), students.end(), [](const Student& a, const Student& b) {
        if (a.score != b.score) {
            return a.score > b.score;
        } else if (a.age != b.age) {
            return a.age < b.age;
        } else {
            return a.name < b.name;
        }
    });

    for (const auto& student : students) {
        std::cout << student.name << " " << student.age << " " << student.score << std::endl;
    }

    return 0;
}

在 lambda 表达式中我们定义了一个比较函数,根据分数、年龄和姓名的顺序进行排序。通过 std::sort 将学生数组按照要求排序后,我们可以输出排序后的结果。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fedc5AzsIAwZTBFA.html

推荐文章

  • C# EnumWindows在安全性方面表现怎样

    EnumWindows函数在安全性方面表现良好。它是一个Windows API函数,用于枚举系统中所有顶层窗口,并将每个窗口的句柄传递给指定的回调函数。由于EnumWindows函数只...

  • 对于程序员来说C# EnumWindows难吗

    对于有经验的程序员来说,使用C#编写EnumWindows并不难。该函数可以用于枚举所有顶层窗口,并且可以通过P/Invoke调用来使用。
    然而,对于新手程序员来说可能...

  • C# EnumWindows可以实现哪些功能

    在C#中,EnumWindows函数可以实现以下功能: 遍历当前桌面上的所有顶级窗口,获取其窗口句柄等信息。
    可以根据窗口的类名、标题等属性进行筛选和识别。

  • C# EnumWindows的性能表现如何

    EnumWindows函数是一个Windows API函数,用于在当前桌面上枚举所有顶级窗口。该函数在遍历窗口集合时,可以使用回调函数来对每个窗口进行处理。
    性能方面,...

  • C++ List Sort 能否实现稳定排序

    是的,C++的std::sort函数可以实现稳定排序。在使用std::sort函数时,可以通过传入第三个参数Compare函数对象,来实现稳定排序。稳定排序是指在排序过程中,对于...

  • C++ List Sort 怎样对自定义对象排序

    要对自定义对象进行排序,首先需要定义一个比较函数或者函数对象来指定如何对对象进行排序。这个比较函数或者函数对象需要返回一个 bool 值,表示两个对象的比较...

  • C++ List Sort 逆序排序怎么实现

    在C++中,可以使用std::sort和std::greater来实现逆序排序。std::sort默认是按升序排序的,但是可以通过使用std::greater函数对象来实现降序排序。
    以下是一...

  • C++ List Sort 排序后的链表如何合并

    在C++中,可以使用std::merge函数来合并两个已经排序的链表。以下是一个示例代码:
    #include #include #include int main() { std::list list1 = {1, 3, 5,...