- ベストアンサー
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<をオーバーロードする方法が見つかったのですが........
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>list::sortの使い方がよくわかりません。 普通に data 用の比較関数を作ればよいはずです。 比較方法を都度切り替えたいような場合は、関数オブジェクトにするのもよいでしょう。
その他の回答 (3)
- shippo_ppk
- ベストアンサー率51% (28/54)
こうやってみたら、 bool obj_comp0(const data &d1, const data &d2) { return d1.s[0] < d2.s[0]; } obj.sort(obj_comp0);
お礼
問題の解決方法ありがとうございます
- jacta
- ベストアンサー率26% (845/3158)
std::list<data>::sortに、比較用の関数オブジェクトを渡すだけでは?
補足
class dataComp { public: int target; どの要素でソートするか int operator()(const DATA& l, const DATA& r){省略}; }; みたいな感じにしてlist<data>::sort(dataComp型オブジェクト)みたいにして使えばいいのでしょうか?
- koko_u_
- ベストアンサー率18% (459/2509)
>データを文字列型のデータの配列の特定のオブジェクトを使ってソートするのに、その方法が見つかりません。 よくわかりませんが、std::sort の使い方がわからないという意味ですか?
補足
list::sortの使い方がよくわかりません。 int型のリストでlist::sortを使えば普通に使えますが..........
お礼
なるほど、その方法を取り入れたいと思います