要對自定義對象進行排序,首先需要定義一個比較函數或者函數對象來指定如何對對象進行排序。這個比較函數或者函數對象需要返回一個 bool 值,表示兩個對象的比較結果。
假設我們有一個自定義對象 Person,包含姓名和年齡兩個屬性,我們想要按照年齡來對 Person 對象進行排序,可以定義如下比較函數:
bool comparePersonByAge(const Person& p1, const Person& p2) {
return p1.age < p2.age;
}
然后在對 Person 對象的列表進行排序時,可以使用 std::sort 函數,并將上面定義的比較函數作為參數傳入:
std::vector<Person> persons = {{"Alice", 25}, {"Bob", 30}, {"Cathy", 20}};
std::sort(persons.begin(), persons.end(), comparePersonByAge);
另外,也可以使用 Lambda 表達式來定義比較函數,將上面的比較函數改寫為 Lambda 表達式:
std::sort(persons.begin(), persons.end(), [](const Person& p1, const Person& p2) {
return p1.age < p2.age;
});
通過以上方法,就可以對自定義對象進行排序。