Отличие между assign() и operator= при работе с векторами в C++ заключается в их назначении:
- assign() удаляет вектор и копирует указанные элементы в пустой вектор. 1 Во-первых, функция удаляет все существующие элементы в векторе, а затем либо вставляет указанный диапазон элементов из исходного вектора в вектор, либо вставляет копии нового указанного элемента значения в вектор. 1
- operator= заменяет элементы вектора копией другого вектора. 14
Кроме того, у этих функций разные типы возвращаемых значений: оператор возвращает вектор по ссылке, а assign — void. 3 Также в assign можно передать пару итераторов (диапазон), а в operator= — нет. 3