3

STL:Algorithm ライブラリの sort() 関数を使用して構造体をソートする方法を探していました。これを行うためにベクトルを使用するコードがいくつか見つかりました。例えば

struct person {
   std::string name;
   int age;
};
bool sort_by_name( const person & lhs, const person & rhs )
{
   return lhs.name < rhs.name;
}
bool sort_by_age( const person & lhs, const person & rhs )
{
   return lhs.age < rhs.age;
}
int main() {
   std::vector<person> people;
   // fill in the vector
   std::sort( people.begin(), people.end(), sort_by_name );
   std::sort( people.begin(), people.end(), sort_by_age );
}

ベクトルを使用せずにソートすることは可能ですか?? はいの場合、どのように??

4

1 に答える 1

3

std::sortアルゴリズムは 3 つの引数を取ります。

  • 初期位置へのランダムアクセス反復子。
  • 最終位置へのランダムアクセス反復子と
  • ソート基準

したがって、初期イテレータと最終イテレータを提供できるがあり、並べ替え基準を提供する限り、std::sortその型で使用できます。
ただし、ソート基準にStrict Weak Orderingがあることは重要です。

于 2012-05-28T04:02:27.950 に答える