Подумайте о простом случае массивов - с указателями на их итераторы. Теперь представьте, что s и v были массивами. Если s имеет 3 элемента и v 0, и вы пытаетесь скопировать s в v, это не сработает. Однако если v имеет 3 элемента, то копия будет работать, перезаписывая текущее содержимое.
Модель итератора в STL является обобщением этого. Действительно, указатели могут быть использованы в качестве итераторов, как и другие объекты (вы можете вызвать copy
с указателем на первый элемент массива и указателем на один после конца, и это работает). Поэтому он не работает по той же причине.
back_inserter
- итератор, предназначенный именно для этого случая; вместо того, чтобы перемещаться по коллекции, перезаписывая ее текущую позицию, он увеличивает размер коллекции (которая, следовательно, должна, следовательно, быть коллекцией, которая может расти, например вектор) и записывает в новую позицию.