std::sort
Compare クラスでパラメータ化されたテンプレートです。関数自体は、そのクラスのオブジェクトを引数として取り、それを「呼び出し」て、並べ替えられるコンテナーの要素を比較します。
単純に sort に Compare オブジェクト自体を構築させるのではなく、具体的なオブジェクトを sort に与えることが重要であると思います。(そうでない場合は、私を修正してください。)
foo
ここで、入力として avector<T>
と の比較関数を受け取る関数を実装したいとしますT
。
template <class T, class Compare>
bool foo(const vector<T>& v, Compare comp);
この実装の一部として、T
とのペアを含む別のベクトルをソートしたいと考えています。int
つまり、 a をソートしvector<pair<T, int>>
ます。T
しかし、コンポーネントのみに基づいてこのベクトルをソートしたいと考えています。つまり、指定さT
れた注文を の注文に持ち上げて、それを にpair<T, int>
渡したいということですstd::sort
。
ラムダを使用せずにこれを行うにはどうすればよいですか? 私の問題は、 のオブジェクトをのCompare
オブジェクトに持ち上げる方法が見つからないことT
ですpair<T, int>
。Compare
クラスを持ち上げてからそのオブジェクトを構築することしかできません。つまり、その引数foo
は完全に無視されます。comp
ありがとう。