【C++】Class定義内に比較関数を書いてソート

  • Class外に書くより中に書いた方がいいでしょう
class Data{
    public:
        int i;
        int p;
        int y;
        int order;

    static bool cmp_by_i(const Data &a, const Data &b)
    {
        return a.i < b.i;
    }

    static bool cmp_by_y(const Data &a, const Data &b)
    {
        return a.y < b.y;
    }
};

...

// sort by year
sort(list.begin(), list.end(), Data::cmp_by_y);

追記

  • 比較関数を複数用意したいなら上記でOK
  • 1つでいいならData自体に比較演算子を定義すれば十分