Максимальный элемент по предикату (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