在 C++ std::vector 和 C 数组之间进行转换而不进行复制

2024-01-19

我希望能够在 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(使用前将#替换为@)

在 C++ std::vector 和 C 数组之间进行转换而不进行复制 的相关文章

随机推荐