c++ std::tie在排序中的应用

1949idc 2年前 (2024-09-18) 阅读数 347 #编程语言

std::tie 是 C++ 标准库中的一个函数,它主要用于创建一个元组引用,这样可以方便地将多个值绑定到一起

下面是一个使用 std::tie 进行排序的例子:

#include<iostream>
#include<vector>
#include<algorithm>
#include<tuple>

struct Person {
    std::string name;
    int age;
    double height;
};

int main() {
    std::vector<Person> people = {
        {"Alice", 30, 170.5},
        {"Bob", 25, 180.0},
        {"Charlie", 22, 175.0},
        {"David", 22, 165.0}
    };

    // 按年龄和身高进行排序
    std::sort(people.begin(), people.end(), [](const Person &a, const Person &b) {
        return std::tie(a.age, a.height) < std::tie(b.age, b.height);
    });

    for (const auto &person : people) {
        std::cout<< person.name << " is "<< person.age << " years old and "<< person.height << " meters tall."<< std::endl;
    }

    return 0;
}

在这个例子中,我们首先定义了一个 Person 结构体,包含姓名、年龄和身高。然后,我们创建了一个 std::vector<Person>,并向其中添加了一些人员信息。

接下来,我们使用 std::sort 对这个向量进行排序。排序的依据是年龄和身高,所以我们使用了一个 lambda 表达式,该表达式使用 std::tie 将两个 Person 对象的年龄和身高绑定到一起,然后比较这两个元组。

最后,我们遍历排序后的向量并输出每个人的信息。

通过使用 std::tie,我们可以非常方便地实现复合条件的排序,而无需自己编写比较函数。

版权声明

本文内容由互联网用户自发贡献,该文观点仅代表作者本人
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

© 2010 首途云安 & 厦门硕顿信息技术有限公司 & 闽ICP备11016866号  增值电信业务经营许可证:B1-20203020 地址:福建厦门思明区嘉禾路297号1806
高新技术企业
软件产品证书
计算机软件著作权
ISO认证
国家3A企业