在 C++ 中,你可以通過重載 operator<
來實現復雜的比較操作。這里有一個簡單的例子,展示了如何為一個自定義結構體實現 less
比較操作:
#include<iostream>
#include<vector>
#include<algorithm>
struct Person {
std::string name;
int age;
};
// 重載 operator< 運算符
bool operator<(const Person &a, const Person &b) {
// 先比較年齡
if (a.age < b.age) {
return true;
} else if (a.age > b.age) {
return false;
} else {
// 如果年齡相同,則按名字的字母順序排序
return a.name < b.name;
}
}
int main() {
std::vector<Person> people = {{"Alice", 30}, {"Bob", 25}, {"Charlie", 30}};
// 使用 std::sort 對 people 進行排序
std::sort(people.begin(), people.end());
// 輸出排序后的結果
for (const auto &person : people) {
std::cout<< person.name << " "<< person.age<< std::endl;
}
return 0;
}
在這個例子中,我們定義了一個 Person
結構體,并重載了 operator<
運算符。這個運算符首先比較兩個 Person
對象的年齡,如果年齡相同,則按照名字的字母順序進行排序。然后我們使用 std::sort
函數對一個包含 Person
對象的 std::vector
進行排序,并輸出排序后的結果。