私はstd::vector<int>
あるfoo
を持っています。これは一連の範囲の「エッジ」値を表します。のstd :: bind2nd交換
たとえば、foo
が{1,3,5,7,11}の場合、範囲は1〜3,5〜5,7〜7,11です。私のためには、これは4つの期間に相当します。各期間には範囲内の最初の数字が含まれ、最後の数字は含まれないことに注意してください。したがって、私の例では、8は3番目(ゼロベース)の期間に表示されます。 7は第3の期間にも現れる。 11以上はどこにも現れません。 2番目の期間に現れる。 int
あるbar
考える
は、私は私にbar
を含まなければならない期間を与えること
std::find_if(
foo.begin(),
foo.end(),
std::bind2nd(std::greater<int>(), bar)
) - foo().begin() - 1;
を使用しています。
私の問題:std::bind2nd
は、私はリファクタリングするべきだので廃止されました。更新された関数を使用した同等のステートメントは何ですか? std::bind
は明白な方法で「ドロップイン」しません。
std::bind
を使用することができますC++ 11では
ここで、std :: distance(foo.begin()、std :: lower_bound(foo.begin()、foo.end()、bar)) - 1; – Jarod42