unique_ptr
, как следует из названия, не подлежит копированию. Может существовать только один экземпляр. В результате вы не можете скопировать вектор, содержащий unique_ptr
элементов, поскольку они не могут быть скопированы из одного вектора в другой. Вы можете перемещать только один вектор в другой:
dest_vector = std::move(src_vector);
src_vector
нельзя использовать после этого (кроме перемещения чего-то нового в него.) Все содержащиеся в нем элементы переместились в dest_vector
.
Если вам действительно нужны копии, используйте вместо этого shared_ptr
. Каждая копия по-прежнему будет управлять одним и тем же указателем и будет отслеживать, сколько существует копий. Управляемый указатель будет только удаляться после уничтожения всех shared_ptr
копий.