簡體   English   中英

將std :: vector轉換為數組

[英]Convert std::vector to array

我有一個庫,需要一個數組並填充它。 我想使用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,下面的答案仍然有效!

是:

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

vector中的元素保證是連續的,就像數組一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM