Convert std :: vector to array
Ich habe eine Bibliothek, die ein Array erwartet und es füllt. Ich möchte einen std :: vector anstelle eines Arrays verwenden. Also anstelle von
int array[256];
object->getArray(array);
Ich möchte zu tun
std::vector<int> array;
object->getArray(array);
Aber ich kann keinen Weg finden, es zu tun. Gibt es eine Möglichkeit, dafür std :: vector zu verwenden?
Danke fürs Lesen
EDIT: Ich möchte ein Update für dieses Problem platzieren: Ich habe mit C ++ 11 herumgespielt und einen besseren Ansatz gefunden. Die neue Lösung besteht darin, den Zeiger mit der Funktion std :: vector.data () auf das erste Element zu setzen. Wir können also Folgendes tun:
std::vector<int> theVec;
object->getArray(theVec.data()); //theVec.data() will pass the pointer to the first element
Wenn wir einen Vektor mit einer festen Anzahl von Elementen verwenden möchten, sollten wir stattdessen den neuen Datentyp std :: array verwenden (aus diesem Grund sollte der in der obigen Frage verwendete Variablenname "array" nicht mehr verwendet werden !!).
std::array<int, 10> arr; //an array of 10 integer elements
arr.assign(1); //set value '1' for every element
object->getArray(arr.data());
Beide Codevarianten funktionieren ordnungsgemäß in Visual C ++ 2010. Denken Sie daran: Dies ist C ++ 11-Code. Sie benötigen daher einen Compiler, der die Funktionen unterstützt!
Die Antwort unten ist immer noch gültig, wenn Sie C ++ 11 nicht verwenden!