要对自定义对象进行排序,首先需要定义一个比较函数或者函数对象来指定如何对对象进行排序。这个比较函数或者函数对象需要返回一个 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;
});
通过以上方法,就可以对自定义对象进行排序。