C++でオブジェクトのベクトルをソートする方法


以下に、シンプルで簡単な方法とコード例をいくつか示します。

  1. メンバ変数の比較関数を定義する方法:

    • ソートしたいオブジェクトのクラス内に比較関数を定義します。この関数は、2つのオブジェクトを受け取り、比較した結果を返します。
    • 比較したいメンバ変数を使って、2つのオブジェクトを比較します。
    • 比較関数をstd::sort関数に渡して、ベクトルをソートします。
    class MyObject {
    public:
       int value;
       // 他のメンバ変数
       // 比較関数
       static bool compare(const MyObject& obj1, const MyObject& obj2) {
           return obj1.value < obj2.value;
       }
    };
    std::vector<MyObject> myVector;
    // ベクトルに要素を追加
    // メンバ変数を使ってソート
    std::sort(myVector.begin(), myVector.end(), MyObject::compare);
  2. ラムダ式を使用する方法:

    • ラムダ式を使って比較関数をインラインで定義します。
    • ラムダ式内で比較したいメンバ変数を使ってオブジェクトを比較します。
    • ラムダ式をstd::sort関数に渡して、ベクトルをソートします。
    std::vector<MyObject> myVector;
    // ベクトルに要素を追加
    // ラムダ式を使ってソート
    std::sort(myVector.begin(), myVector.end(), [](const MyObject& obj1, const MyObject& obj2) {
       return obj1.value < obj2.value;
    });

これらの方法を使えば、C++でオブジェクトのベクトルを簡単にソートすることができます。必要に応じて、他のメンバ変数を使ってソートすることもできます。