私はクラス "情報"を持っており、人の名前と年齢をベクトルに格納していると言います。C++でオブジェクトのベクトルをソート
そう...
class Information {
private:
int age;
string name;
//etc, etc...
};
は、どのように私は、年齢に関して昇順/降順のいずれかでベクトルを並べ替えるでしょうか?
私はこのようなものを使用すると信じています。
sort(listOfPeople.begin(), listOfPeople.end(), greater<Information>());
listOfPeopleがベクターになります。
ご協力いただければ幸いです。その後、
class CompareInformations {
public:
// after making CompareInformations a friend class to Information...
operator(const Information& rhs, const Information& lhs) {
return rhs.age < lhs.age;
}
};
そして、あなたの並べ替えを行います:
CompareInformationsを情報に友だちクラスにすることは、どういう意味ですか? – user432584920684
@Vincentのように、 'age'はプライベート変数で、' CompareInformations'クラスはその変数にアクセスします。それは許可されていないので、あなたにエラーを与えるでしょう。しかし、 'friend class CompareInformations;'を 'Information'の定義のどこかに置くと、' CompareInformations'がそのクラスのプライベートメンバーにアクセスできるようになります。あるいは、単に 'rhs.age'へのアクセスを' rhs.getAge() 'やあなたが定義したアクセサに置き換えることもできます。 –
うん、私はrhs.getAge()を使用しました。コンパイルしようとすると次のエラーメッセージが表示されます。 エラー: 'int情報:: getAge()'の 'this'引数として 'const情報'を渡すと修飾子が破棄されるtestone.cpp – user432584920684