我希望能够在 std::vector 及其底层 C 数组 int* 之间进行转换,而无需显式复制数据。
std::vector 是否提供对底层 C 数组的访问?我正在寻找这样的东西
vector<int> v (4,100)
int* pv = v.c_array();
EDIT:
另外,是否可以进行相反的操作,即我如何初始化std::vector
来自 C 数组而不进行复制?
int pv[4] = { 4, 4, 4, 4};
vector<int> v (pv);
您可以获得指向第一个元素的指针,如下所示:
int* pv = &v[0];
仅当向量未重新分配时,该指针才有效。如果插入的元素多于向量的剩余容量(也就是说,如果v.size() + NumberOfNewElements > v.capacity()
。您可以使用v.reserve(NewCapacity)
确保向量的容量至少为NewCapacity
.
还要记住,当向量被破坏时,底层数组也会被删除。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)