- ベストアンサー
STLのlistのソートについて教えてください。
STLで何か作ってみようと思っているのですが、複数のメンバを持つ構造体オブジェクトのリスト(要素の値が構造体オブジェクトであるリスト)を、その構造体オブジェクトのメンバの中の1つのをキーとして昇順、又は降順にソートしようとした場合、どのようにすればよいのでしょうか?? http://www5c.biglobe.ne.jp/~ecb/cpp/07_08.html ここを見ると、sort() という関数があるようですが、単に昇順でソートする、としか書いていなく、構造体のリストのソートはどうするのだろうと疑問です。 詳しい方いらっしゃいましたらご教授頂けると幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
具体的にはこんな感じです。 #include <iostream> #include <list> #include <algorithm> #include <iterator> struct A { int a; }; // ↓これが大事! bool less(const A& lhs, const A& rhs) { return lhs.a < rhs.a; } std::ostream& operator<<(std::ostream& ostr, const A& a) { return ostr << a.a; } int main() { A a[] = { {5}, {2}, {10}, {13}, {8} }; std::list<A> la(a + 0, a + 5); la.sort(&less); std::copy(la.begin(), la.end(), std::ostream_iterator<A>(std::cout, ", ")); return 0; }
その他の回答 (1)
- koko_u_
- ベストアンサー率18% (459/2509)
>構造体のリストのソートはどうするのだろうと疑問です。 sort() の引数にその要素の構造体を比較するための関数オブジェクトを渡して下さい。
お礼
お礼遅れてすいません。 回答くださった方々ありがとうございました。