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ąForwardIterator
s.
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
?