其他人已经展示了C++98/03的解决方案。在C++11中,您可能希望使用一个lambda表达式来进行比较:
std::sort(people.begin(), people.end(),
[](person const &a, person const &b) { return a.age < b.age; });
std::sort(people.begin(), people.end(),
[](person const &a, person const &b) { return b.age < a.age; });
如果有这样的情况发生:
在IT技术方面,如果出现问题:
std::sort(people.begin(), people.end(),
[](person const &a, person const &b) { return a.name < b.name; });
std::sort(people.begin(), people.end(),
[](person const &a, person const &b) { return b.name < a.name; });
在我看来,信息
这个名称太过于通用了,因此我将其更改为人员
。相反的,人员列表
过于强调形式而非内容(更糟糕的是,它实际上是错误的,因为你真正拥有的是一个人员向量,根本不是一个列表)。在编程中,我认为通常最好只使用列表
指代链表,而不是一般的线性数据结构。
getAge
方法标记为const
吗?只有const
函数才能在const
对象上调用。或者从比较函数的参数中删除const
。 - Seth Carnegiesort(listOfPeople.begin(), listOfPeople.end(), CompareAges());
更改为sort(listOfPeople.begin(), listOfPeople.end(), CompareAges);
。注意我删除了CompareAges
后面的括号。 - Seth Carnegie