• ベストアンサー

STLのlist どのデータでソートするか分からないデータでソートを行うには?

class data { public: 文字列型* str; //コンストラクタでN個の配列を生成 int N; //文字列の配列の個数 }; list<data> obj; と書いて、objに対して大量にデータを追加した後、その要素をソートするところで困っています。 データを文字列型のデータの配列の特定のオブジェクトを使ってソートするのに、その方法が見つかりません。 リストのデータの一つ目 str[0] = "abc"; str[1] = "def"; リストのデータの二つ目 str[0] = "ghi"; str[1] = "jkl"; というリストのデータがあったときに、str[0]の要素でソートしたいということなのですが........ メンバのint型などについては、operator<をオーバーロードする方法が見つかったのですが........

質問者が選んだベストアンサー

  • ベストアンサー
  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.3

>list::sortの使い方がよくわかりません。 普通に data 用の比較関数を作ればよいはずです。 比較方法を都度切り替えたいような場合は、関数オブジェクトにするのもよいでしょう。

sirn
質問者

お礼

なるほど、その方法を取り入れたいと思います

その他の回答 (3)

回答No.4

こうやってみたら、 bool obj_comp0(const data &d1, const data &d2) { return d1.s[0] < d2.s[0]; } obj.sort(obj_comp0);

sirn
質問者

お礼

問題の解決方法ありがとうございます

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

std::list<data>::sortに、比較用の関数オブジェクトを渡すだけでは?

sirn
質問者

補足

class dataComp { public: int target; どの要素でソートするか int operator()(const DATA& l, const DATA& r){省略}; }; みたいな感じにしてlist<data>::sort(dataComp型オブジェクト)みたいにして使えばいいのでしょうか?

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>データを文字列型のデータの配列の特定のオブジェクトを使ってソートするのに、その方法が見つかりません。 よくわかりませんが、std::sort の使い方がわからないという意味ですか?

sirn
質問者

補足

list::sortの使い方がよくわかりません。 int型のリストでlist::sortを使えば普通に使えますが..........

関連するQ&A