Как я могу использовать вектор в вызове метода, который требует массив? - PullRequest
0 голосов
/ 10 января 2012

Например, этот метод:

memcpy(pVoid, MyStructArray, sizeof(MyStructArray)); 

Раньше это было хорошо, потому что я вызывал этот метод один раз при создании экземпляра, где массив был предварительно определенного размера.Однако возникла необходимость динамического изменения информации в массиве, поэтому вместо этого я использую вектор.Гарантируется ли непрерывность информации в векторе?

Могу ли я сделать что-то вроде

 memcpy(pVoid, &MyStructVector, sizeof(*MyStructVector) * MyStrucVector.size()); 

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Данные в std::vector непрерывны. Но вы не можете скопировать это, как вы делаете. Вы можете, однако, сделать это:

memcpy(pVoid, &MyStructVector[0], sizeof(MyStructVector[0]) * MyStrucVector.size()); 
0 голосов
/ 10 января 2012

Да std :: vector является смежным.

вы должны использовать &MyStructVector[0] там, где вы ожидаете стандартный указатель массива в стиле C

...