5

そのため、ヘッダーの c++ ドキュメントには、ベクトルをソートできる便利な関数があります。クラスがありPersonます。そのクラス ( vector<Person*>) のオブジェクトへのポインターのベクトルがあり、年齢、名前の長さなど、さまざまなパラメーターで人々を比較したいと考えています。

必要な変数を返す関数が既にありますが、その方法がわかりません。これは、C++ リファレンスhttp://www.cplusplus.com/reference/algorithm/sort/のソート ベクトル関数へのリンクです。

4

2 に答える 2

14

それはとても簡単です:

struct student
{
  string name;
  string grade;
};

bool cmd(const student & s1, const student & s2)
{
   if (s1.name != s2.name) return s1.name < s2.name;
   return s1.grade < s2.grade;
}

それで:

vector<student> s;
sort(s.begin(), s.end(), cmd);

生徒はアルファベット順にソートされます。2 人の生徒が同じ名前の場合は、学年順になります。

于 2012-12-29T11:50:33.867 に答える
-1

オブジェクトの同じプロパティを使用して、「<」、「>」などの演算子をオーバーライドしてみてください。その後、ソート操作を再定義できます。

于 2012-12-31T13:30:43.737 に答える