如何通过cmp函数实现C++中的复杂排序逻辑

   2024-10-02 4490
核心提示:在C++中,可以通过自定义cmp函数来实现复杂排序逻辑。cmp函数是一个比较函数,用于指定排序时的比较规则。以下是一个示例,演示

在C++中,可以通过自定义cmp函数来实现复杂排序逻辑。cmp函数是一个比较函数,用于指定排序时的比较规则。以下是一个示例,演示如何通过cmp函数实现复杂排序逻辑:

#include <iostream>#include <algorithm>#include <vector>struct Person {    std::string name;    int age;    bool operator<(const Person& other) const {        return age < other.age;    }};bool cmp(const Person& a, const Person& b) {    // 先按年龄从小到大排序    if (a.age < b.age) {        return true;    } else if (a.age > b.age) {        return false;    }        // 年龄相同的情况下,按姓名的字典序从小到大排序    return a.name < b.name;}int main() {    std::vector<Person> people = {{"Alice", 25}, {"Bob", 20}, {"Alice", 30}, {"Bob", 25}};        // 使用cmp函数进行排序    std::sort(people.begin(), people.end(), cmp);        // 输出排序结果    for (const Person& p : people) {        std::cout << p.name << " " << p.age << std::endl;    }        return 0;}

在上面的示例中,定义了一个Person结构体,包含姓名和年龄两个成员变量。通过重载Person结构体的<运算符,指定了默认的排序规则为按年龄从小到大排序。然后定义了cmp函数,实现了复杂的排序逻辑:先按年龄从小到大排序,年龄相同的情况下按姓名的字典序从小到大排序。

在main函数中,创建了一个包含4个Person对象的vector,并使用std::sort函数和自定义的cmp函数进行排序。最后输出排序结果,可以看到排序结果符合预期的排序逻辑。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号