从原始数据就地创建std :: vector

cDc*_*cDc 6 c++ arrays memory-management vector

给定一个原始元素数组,如何创建一个std::vector无需重新分配和复制即可获取原始数组所有权的元素?

例如,具有原始数组:

int* elems = new int[33]

如何创建一个指向std::vector的大小?33elems

我确信理论上这是可能的,因为通常std::vector将其实现为包含三个指针的结构,一个指针指向分配的内存的开始,一个指向有效元素的末尾,另一个指向分配的内存的末尾。但是,是否有std::vector使用原始数组初始化结构的标准方法?

Ale*_*lex 1

根据this,没有接受数据指针的构造函数。因此,您不能将原始数组的所有权传递给向量。

您只能创建一个向量并将数据放入其中。