Почему в алгоритмы в качестве второго параметра мы передаем указатель на конец контейнера(end), а не просто количество элементов
Почему в алгоритмы (напрмер: for_each()) в качестве второго параметра мы передаем указатель на конец контейнера(end), а не просто количество элементов?
Ответы (1 шт):
Потому что это позволяет в алгоритме использовать только одну сущность - указатель, а не две (указатель и счетчик пройденных элементов).
Обобщенные алгоритмы их STL могут работать с указателями, для которых доступен только инкремент на 1, так что если передавать указатель и количество элементов, придется отдельно шагать указателем и отдельно обрабатывать счетчик.
Если же передавать end() - все становится универсальным. Алгоритм работает и с итераторами, и с указателями, и с итераторами, для которых определен только инкремент (как у std::list)