Я столкнулся с этим вопросом сегодня и подумал, что должен опубликовать его для справки сообщества и / или мнений.
Стандартные контейнеры C ++ vector, deque, list и string предоставляют функцию-член assign
. Есть две версии; Меня в первую очередь интересует тот, кто принимает диапазон итераторов. Книга Josuttis немного двусмысленна с ее описанием. Из с. 237 ...
Назначает все элементы диапазона [beg, end); то есть заменяет все существующие элементы копиями элементов [beg, end).
В нем не говорится, что произойдет, если размер контейнера-адресата отличается от назначаемого диапазона. Это усекает? Это автоматически расширяется? Это неопределенное поведение?