阅读量:0
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
,我们可以非常方便地实现复合条件的排序,而无需自己编写比较函数。