有没有办法移动unique_ptr
unique_ptr<int[]> foo;
进入矢量?
vector<int> bar;
答案 0 :(得分:5)
不,你不能只用vector
一块内存并期望它将它用作数组存储。 vector
的存储空间必须来自vector
使用的分配器。
您可以尝试使用allocator gimmicks以某种方式将内存伪装到vector
。但即使这样也很棘手,因为vector
可以根据需要分配尽可能多的int
,无论你告诉它多大。
您可以将unique_ptr
的内容移动到阵列的元素中。比如说,如果你有一个vector<unique_ptr<int[]>>
。但是你不能把一块记忆打成vector
。