Dlaczego std :: max_element wymaga ForwardIterator?

Biblioteka standardowa C ++max_element Algorytm wymaga iteratorów przekazywanych jako dane wejściowe do modeluForwardIterator.

Moje rozumienie jest takieForwardIterator rafinujeInputIterator określając, że możesz użyć aForwardIterator wielokrotnie powtarzać ten sam zakres. Dlatego algorytmy wieloprzebiegowe wymagająForwardIterators.

Jednak,max_element nie jest algorytmem wieloprzebiegowym - wystarczy iterować raz, aby określić jego maksymalny element. Więc dlaczegomax_element potrzebują dodatkowych możliwościForwardIterator?

questionAnswers(1)

yourAnswerToTheQuestion