Почему std :: ecector :: insert требует, чтобы шаблон был скопируется и копирует?C++

Программы на C++. Форум разработчиков
Anonymous
Почему std :: ecector :: insert требует, чтобы шаблон был скопируется и копирует?

Сообщение Anonymous »

n4868 22.2.3.3 Таблица 77 Требования к контейнеру последовательности утверждают, что вставка (iterator pos, size_type count, t требует t для copyinsertable и copyAssignable в любом контейнере последовательности. Это означает, что не может быть сделано никаких движений или свопов, чтобы сдвинуть элементы, если POS уже занят.
Вопрос в том, как Std :: vector ситуации обрабатывают ситуации, когда у него достаточно места для вставки n -элементов, и ему необходимо сдвинуть элементы, указанные pos ? Всегда ли это перераспределять память независимо от t ? Или он использует конструктор/назначение копирования для сдвига элементов, а затем назначает их в обязательное место? Если да, то сдвигается только тогда, когда T Copy Construction/назначение не бросается?

Подробнее здесь: https://stackoverflow.com/questions/797 ... yinsertabl

Вернуться в «C++»