C++のオブジェクト配列をどのようにソートしますか?
C++では、オブジェクトの配列をソートするために、標準ライブラリ関数std::sortを使用することができます。ただし、std::sortを使用する前に、比較関数を定義したり、オブジェクトの演算子をオーバーロードしたりして、オブジェクトのソートルールを指定する必要があります。
以下は、学生の年齢でStudentオブジェクトの配列をソートする方法を示す例です。
#include <algorithm>
#include <iostream>
#include <vector>
class Student {
public:
std::string name;
int age;
Student(std::string name, int age) : name(name), age(age){}
// 重载运算符<,用于指定排序规则
bool operator<(const Student& other) const {
return age < other.age;
}
};
int main() {
std::vector<Student> students;
students.push_back(Student("Alice", 20));
students.push_back(Student("Bob", 19));
students.push_back(Student("Charlie", 22));
// 使用std::sort对students数组进行排序
std::sort(students.begin(), students.end());
// 打印排序后的结果
for (const auto& student : students) {
std::cout << "Name: " << student.name << ", Age: " << student.age << std::endl;
}
return 0;
}
以上のコードでは、Studentクラスを定義し、nameとageの2つのメンバー変数を含んでいます。オブジェクト配列のソートを実現するために、学生の年齢で比較するルールを指定するために、<演算子のオーバーロードを行いました。
main関数では、Studentオブジェクトをstd::vectorに保存し、std::sortを使用して配列を並べ替えます。最後に、並べ替えられた配列を走査して結果を表示します。出力結果は学生の年齢が小さい順に並べられます。