У меня есть foo
, который является std::vector<int>
. Он представляет «краевые» значения для набора диапазонов.Замена для std :: bind2nd
Например, если foo
является {1, 3, 5, 7, 11}, то диапазоны 1-3, 3-5, 5-7, 7-11. Значительно для меня это соответствует 4 периодам. Обратите внимание, что каждый период включает в себя первое число в диапазоне, а не последнее. Поэтому в моем примере 8 появляется в третьем (нулевом) периоде. 7 также появляется в 3-й период. 11 и выше нигде не появляется. 2 появляется в 0-й период.
Учитывая bar
, который является int
, я использую
std::find_if(
foo.begin(),
foo.end(),
std::bind2nd(std::greater<int>(), bar)
) - foo().begin() - 1;
дать мне срок, который должен содержать bar
.
Моя проблема: std::bind2nd
не рекомендуется, поэтому я должен использовать рефакторинг. Что такое эквивалентная инструкция с использованием обновленных функций? std::bind
не «заглядывает» очевидным образом.
BTW, 'std :: distance (foo.begin(), std :: lower_bound (foo.begin(), foo.end(), bar)) - 1;' здесь более уместно. – Jarod42