Diziyi bekleyen ve dolduran bir kitaplığım var. Bir dizi kullanmak yerine std :: vektör kullanmak istiyorum.Std :: vektörünü diziye dönüştür.
std::vector<int> array;
object->getArray(array);
Ama bunu yapmak için bir yol bulamıyor: Bunun yerine
int array[256];
object->getArray(array);
I yapmak istiyorum. Bunun için std :: vector kullanma şansı var mı? Okumak için
teşekkürler!
DÜZENLEME: Ben bu soruna bir güncelleme yerleştirmek istiyorum: C++ 11 ile de oynuyordum ve daha iyi bir yaklaşım bulduk. Yeni çözüm, işaretçiyi ilk elemana almak için std :: vector.data() işlevini kullanmaktır.
std::vector<int> theVec;
object->getArray(theVec.data()); //theVec.data() will pass the pointer to the first element
biz daha iyi bu nedenle değişken adı için btw (yerine yeni veri türü std :: dizi kullanmak elemanlarının sabit miktarda bir vektör kullanmak istiyorsanız "dizi: yüzden aşağıdakileri yapabilirsiniz “Yukarıdaki soruda kullanılmış olan artık kullanılmamalıdır!”.
std::array<int, 10> arr; //an array of 10 integer elements
arr.assign(1); //set value '1' for every element
object->getArray(arr.data());
kod varyantları Hem Visual C++ 2010 hatırla düzgün çalışacaktır: Eğer özelliklerini destekleyen bir derleyici gerekir bu yüzden bu C++ 11 Kod olduğunu!
Aşağıdaki yanıt C++ 11'i kullanmıyorsanız hala geçerlidir!
Olası çoğaltılabilir [Vektör, C++ dizisine nasıl dönüştürülür?] (Http://stackoverflow.com/questions/2923272/how-to-convert-vector-to-array-c) – Trilarion