プロが教えるわが家の防犯対策術!

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<をオーバーロードする方法が見つかったのですが........

A 回答 (4件)

こうやってみたら、



bool obj_comp0(const data &d1, const data &d2)
{
return d1.s[0] < d2.s[0];
}

obj.sort(obj_comp0);
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/06/29 14:30

>list::sortの使い方がよくわかりません。


普通に data 用の比較関数を作ればよいはずです。
比較方法を都度切り替えたいような場合は、関数オブジェクトにするのもよいでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/06/29 14:29

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

この回答への補足

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

補足日時:2008/06/29 00:38
    • good
    • 0

>データを文字列型のデータの配列の特定のオブジェクトを使ってソートするのに、その方法が見つかりません。



よくわかりませんが、std::sort の使い方がわからないという意味ですか?

この回答への補足

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

補足日時:2008/06/29 00:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!