Почему для std :: max_element требуется ForwardIterator?
Стандартная библиотека C ++max_element
алгоритм требует, чтобы итераторы передавались в качестве входных данных для моделированияForwardIterator
.
Я понимаю, чтоForwardIterator
рафинируетInputIterator
указав, что вы можете использоватьForwardIterator
итерировать один и тот же диапазон несколько раз. Поэтому многопроходные алгоритмы требуютForwardIterator
s.
Тем не мение,max_element
не является многопроходным алгоритмом - достаточно итерировать диапазон, чтобы определить его максимальный элемент. Так почему жеmax_element
нужны дополнительные возможностиForwardIterator
?