Максимальный элемент по предикату
Условие
Реализуйте шаблонную функцию
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