我有一个需要传入数组并填充的库。我希望使用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(顺便说一句,出于这个原因,问题中使用的变量名"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,则下面的答案仍然有效!