c++ - 将 std::vector 转换为数组

标签 c++ stl vector

我有一个库,它需要一个数组并填充它。我想使用 std::vector 而不是使用数组。所以不是

int array[256];
object->getArray(array);

我想做:

std::vector<int> array;
object->getArray(array);

但我找不到办法。有没有机会为此使用 std::vector ?

感谢阅读!


编辑: 我想对此问题进行更新: 我在玩 C++11 并找到了更好的方法。新的解决方案是使用函数 std::vector.data() 来获取指向第一个元素的指针。 所以我们可以做到以下几点:

std::vector<int> theVec;
object->getArray(theVec.data()); //theVec.data() will pass the pointer to the first element

如果我们想使用具有固定数量元素的 vector ,我们最好使用新的数据类型 std::array 来代替(顺便说一句,出于这个原因,上面问题中使用的变量名“array”不应该是不再使用了!!)。

std::array<int, 10> arr; //an array of 10 integer elements
arr.assign(1); //set value '1' for every element
object->getArray(arr.data());

这两种代码变体都可以在 Visual C++ 2010 中正常工作。请记住:这是 C++11 代码,因此您需要一个支持这些功能的编译器!

如果你不使用 C++11,下面的答案仍然有效!

最佳答案

是的:

std::vector<int> array(256); // resize the buffer to 256 ints
object->getArray(&array[0]); // pass address of that buffer

vector 中的元素保证是连续的,就像数组一样。

关于c++ - 将 std::vector 转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3787074/

相关文章:

c++ - 试图获取从文件中读取的随机素数之和?

c++ - 文件到 std::string_view

list - 列表与向量上的 Scala 内存问题

c++ - STL iota 包含文件更改

c++ - 如何识别 std::unordered_map 是否发生哈希冲突?

c++ - 参照同一 vector 的数据插入 vector

vector - 如何计算3d球体的速度顶点 - 爆炸(粒子系统中)

c++ - 在没有固定角度的图像上绘制旋转边界框

C++:使用单个 get 函数返回与对象相关的变量

c++ - 枚举和指向成员的指针