其他人已經所示的C++ 98/03的解決方案。在C++ 11,你可能想使用lambda你比較,而不是:
// ascending age:
std::sort(people.begin(), people.end(),
[](person const &a, person const &b) { return a.age < b.age; });
// descending age:
std::sort(people.begin(), people.end(),
[](person const &a, person const &b) { return b.age < a.age; });
而且,在情況下,它碰巧出現:
// ascending name:
std::sort(people.begin(), people.end(),
[](person const &a, person const &b) { return a.name < b.name; });
// descending name:
std::sort(people.begin(), people.end(),
[](person const &a, person const &b) { return b.name < a.name; });
IMO,Information
是過於籠統的名稱,所以我將它更改爲person
。相反,listOfPeople
過分強調形式而不是內容(更糟糕的是,這顯然是錯誤的,因爲你真的有一個人的矢量,而不是一個列表)。國際海事組織,在編程方面,通常只使用list
來引用鏈表,而不是一般的線性數據結構。
通過使CompareInformations成爲信息的朋友類是什麼意思? – user432584920684
@Vincent像你一樣,'age'是一個私有變量,'CompareInformations'類訪問這個變量。這會給你一個錯誤,因爲這是不允許的。但是,如果您在'Information'的定義中放置了'friend class CompareInformations',則會讓'CompareInformations'訪問該類的私有成員。或者你可以用'rhs.getAge()'或者你定義的任何訪問器來替換'rhs.age'和東西。 –
是的,我用rhs.getAge()。我嘗試過,但是在嘗試編譯時遇到以下錯誤消息。 錯誤:傳遞'const Information'作爲'int'參數的'int Information :: getAge()'丟棄限定符testone.cpp – user432584920684