C++ и Python

Максимальный элемент по предикату (4)

Максимальный элемент по предикату

Условие

Реализуйте шаблонную функцию

template<typename ForwardIterator, typename UnaryPredicate>
ForwardIterator max_element_if(ForwardIterator first, ForwardIterator last, UnaryPredicate pred);

возвращающую итератор на максимальный элемент в диапазоне [first, last), для которого предикат pred возвращает true. Если диапазон содержит несколько подходящих элементов с максимальным значением, то результатом будет первое вхождение такого элемента. Если диапазон не содержит подходящих элементов, то функция должна вернуть last.

Гарантируется, что

  • pred принимает аргумент того типа, который имеют элементы диапазона
  • для ForwardIterator определены операторы ++, ==, !=, * (разыменование)
  • для типа, на который указывает итератор, определен оператор < ("меньше")

Подсказка: посмотреть реализацию функции std::find_if

Как тестировать локально

Собрать программу с помощью cmake и запустить ctest:

mkdir build; cd build
cmake ..; cmake --build .
ctest -V