• ベストアンサー

STLのlistのソートについて教えてください。

STLで何か作ってみようと思っているのですが、複数のメンバを持つ構造体オブジェクトのリスト(要素の値が構造体オブジェクトであるリスト)を、その構造体オブジェクトのメンバの中の1つのをキーとして昇順、又は降順にソートしようとした場合、どのようにすればよいのでしょうか?? http://www5c.biglobe.ne.jp/~ecb/cpp/07_08.html ここを見ると、sort() という関数があるようですが、単に昇順でソートする、としか書いていなく、構造体のリストのソートはどうするのだろうと疑問です。 詳しい方いらっしゃいましたらご教授頂けると幸いです。

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

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.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; }

miraikako
質問者

お礼

お礼遅れてすいません。 回答くださった方々ありがとうございました。

その他の回答 (1)

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

>構造体のリストのソートはどうするのだろうと疑問です。 sort() の引数にその要素の構造体を比較するための関数オブジェクトを渡して下さい。

関連するQ&A

専門家に質問してみよう