16

私は を持ってfoostd::vector<int>ます。一連の範囲の「エッジ」値を表します。

たとえば、foo{1, 3, 5, 7, 11} の場合、範囲は 1 ~ 3、3 ~ 5、5 ~ 7、7 ~ 11 です。私にとって重要なのは、これが 4 ピリオドに相当することです。各ピリオドには、範囲の最後の数値ではなく、最初の数値が含まれることに注意してください。したがって、私の例では、8 は 3 番目 (ゼロベース) のピリオドに表示されます。3期にも7が登場。11 以上はどこにも表示されません。2 は第 0 ピリオドに表示されます。

barである aが与えられた場合int、私は使用します

std::find_if(
    foo.begin(),
    foo.end(),
    std::bind2nd(std::greater<int>(), bar)
) - foo().begin() - 1;

を含むべきピリオドを教えてくださいbar

私の問題:std::bind2nd非推奨なので、リファクタリングする必要があります。更新された関数を使用した同等のステートメントは何ですか? std::bind明らかな方法で「立ち寄る」ことはありません。

4

3 に答える 3