(
Код: Выделить всё
vector
все они имеют метод Assign. Например, std::vector имеет
(цитата cppreference.com):
Код: Выделить всё
void assign( size_type count, const T& value );
template< class InputIt >
void assign( InputIt first, InputIt last );
void assign( std::initializer_list ilist );
использование оператора = во временной конструкции, созданной с использованием аргументов
Код: Выделить всё
assign метод. Зачем нужен отдельный метод, например:
vec.assign({1,2,3});
Код: Выделить всё
vec = {1,2,3};
Тем временем ассоциативные контейнеры C++, такие как std::map, не имеют
назначения метод. Почему нет? Какая причина является достаточно убедительной
для того, чтобы контейнеры последовательностей имели его, а не ассоциативные контейнеры?
В частности, мое первоначальное предположение о том, почему контейнеры последовательностей имеют
Код: Выделить всё
assign
обстоятельствах, но те же рассуждения применимы и к ассоциативным
контейнерам, верно? (И при назначении перемещения создание временного объекта
в любом случае, вероятно, не имеет большого значения.)
У этого вопроса есть практическое применение: я создаю контейнер
, который имеет характеристики как последовательность, так и ассоциативный контейнер,
и задаемся вопросом, есть ли веская причина предоставить для
метод назначения.
Подробнее здесь: https://stackoverflow.com/questions/788 ... -container