Алгоритм max_element
стандартной библиотеки C++ требует, чтобы итераторы передавались в качестве входных данных для модели ForwardIterator
.
Насколько я понимаю, ForwardIterator
уточняет InputIterator
, указывая, что вы можете использовать ForwardIterator
для повторения одного и того же диапазона несколько раз. Следовательно, многопроходные алгоритмы требуют ForwardIterator
s.
Однако max_element
не является многопроходным алгоритмом — достаточно один раз перебрать диапазон, чтобы определить его максимальный элемент. Так зачем max_element
нужны дополнительные возможности ForwardIterator
?