给定一个原始数组元素,如何创建一个std::vector
,该数组获取原始数组的所有权而不用重新分配& copy?从原始数据创建std :: vector
例如具有原始阵列:
int* elems = new int[33]
如何创建尺寸33
指向elems
的std::vector
?
我相信理论上这是可能的,因为通常std::vector
被实现为包含三个指针的结构,一个指向分配内存的开始,一个指向有效元素的末尾,一个指向有效元素的末尾,一个指向末尾分配的内存。但有没有一种标准的方式来初始化原始数组的std::vector
结构?
你不能。不要使用新的“原始数据”,使用矢量。 – 2017-11-11 09:04:48
如果你需要像'begin'或'front'这样的常用方法,你可以在'unique_ptr'中存储指向数组的指针并通过'array_view '访问数组内容。 –
VTT
做相反的事情:让'vector'管理内存,并创建一个指向它的指针'std :: vector v; int * elems = v.data();' –
Tas