2

std::sortCompare クラスでパラメータ化されたテンプレートです。関数自体は、そのクラスのオブジェクトを引数として取り、それを「呼び出し」て、並べ替えられるコンテナーの要素を比較します。

単純に 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

ありがとう。

4

1 に答える 1