C++: 構造体を格納したSTLコンテナのソート

「C++: 構造体を格納したSTLコンテナのソート」の編集履歴(バックアップ)一覧に戻る

C++: 構造体を格納したSTLコンテナのソート - (2011/01/31 (月) 16:20:58) のソース

構造体
struct A {...};
を格納したSTLコンテナ
(例)std::vector<A> a;
を<algorithm>のsort関数を用いて行う方法。
以下の三つを紹介
-比較演算子のオーバーロード
-比較関数
-関数オブジェクト
***比較演算子のオーバーロード
比較演算子
 bool operator<(const A &left, const A &right) {...}
 bool operator>(const A &left, const A &right) {...}
をオーバーロードする。ソートのときは
 std::sort(a.begin(), a.end());
とする。
***比較関数
比較関数
 bool compare(const A &left, const A &right) {...}
を定義する。関数名compareは何でもいい。ソートの時は
 std::sort(a.begin(), a.end(), compare);
とする。
***関数オブジェクト
operator()を持つ関数オブジェクト
 class compare {
     bool operator()(const A &left, const A &right) {...}
 };
を定義する。クラス名compareは何でもいい。ソートの時は
 std::sort(a.begin(), a.end(), compare);
とする。

&link_edit(text=このページを編集)
----
#comment()