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
,我們可以非常方便地實現復合條件的排序,而無需自己編寫比較函數。