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