Почему в алгоритмы в качестве второго параметра мы передаем указатель на конец контейнера(end), а не просто количество элементов

Почему в алгоритмы (напрмер: for_each()) в качестве второго параметра мы передаем указатель на конец контейнера(end), а не просто количество элементов?


Ответы (1 шт):

Автор решения: gbg

Потому что это позволяет в алгоритме использовать только одну сущность - указатель, а не две (указатель и счетчик пройденных элементов).

Обобщенные алгоритмы их STL могут работать с указателями, для которых доступен только инкремент на 1, так что если передавать указатель и количество элементов, придется отдельно шагать указателем и отдельно обрабатывать счетчик.

Если же передавать end() - все становится универсальным. Алгоритм работает и с итераторами, и с указателями, и с итераторами, для которых определен только инкремент (как у std::list)

→ Ссылка