将std :: vector转换为数组

时间:2010-09-24 12:32:12

标签: 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

如果我们想使用具有固定数量元素的向量,我们最好使用新数据类型std :: array(btw,因此在上面的问题中使用的变量名称“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,以下答案仍然有效!

1 个答案:

答案 0 :(得分:26)

是:

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

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