📌  相关文章
📜  c++ 按属性对对象的向量进行排序 - C++ (1)

📅  最后修改于: 2023-12-03 15:29:52.699000             🧑  作者: Mango

C++按属性对对象的向量进行排序

在C++中,我们可以使用STL的sort()函数来对对象的向量进行排序。但是,如果我们想按照对象的某个属性进行排序,就需要自定义排序规则。

自定义排序规则

我们可以编写一个用于比较两个对象的函数,并将其传递给sort()函数,以告诉sort()函数如何比较这些对象。例如,假设我们有一个名为Person的类,并且想按照Person对象的年龄属性进行排序。我们可以创建一个比较函数,该函数接收两个Person对象作为参数,并返回一个布尔值表示第一个Person对象是否应该排在第二个Person对象之前。

class Person {
public:
    string name;
    int age;
    
    Person(string n, int a) : name(n), age(a){}
};

bool compareByAge(Person a, Person b) {
    return a.age < b.age;
}

上面的代码定义了Person类和一个用于比较Person对象的函数compareByAge()。我们可以在sort()函数中使用该函数来按年龄对Person对象进行排序。

排序对象的向量

现在,我们想对一个包含多个Person对象的向量进行排序。我们可以使用以下代码:

vector<Person> people = { Person("Alice", 21), Person("Bob", 25), Person("Charlie", 18) };
sort(people.begin(), people.end(), compareByAge);

上面的代码将创建一个包含三个Person对象的向量,并使用compareByAge()函数对它们进行排序。由于sort()函数是一个就地排序算法,因此它将重排该对象的向量以反映排序顺序。

总结

在C++中,我们可以使用自定义比较函数来对对象的向量进行排序。这使得我们可以根据对象的任何属性对它们进行排序,而不只是按照默认的小于运算符定义。