2012-01-10 29 views
0

例如,该方法:如何在需要数组的方法调用中使用矢量?

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

过去,这是很好的,因为我上实例化,其中阵列SA预先定义尺寸一旦调用此方法。然而,它有必要动态地改变'数组'中的信息,所以我使用的是一个矢量。矢量中的信息是否保证连续?

我可以做类似

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

我想* MyStructVector不会工作,我怎么能得到一个元素的大小?或者我可以从字面上做sizeof(MyStructVector)? – SirYakalot 2012-01-10 16:57:18

+1

一个元素的大小是'sizeof MyStructVector [0]';并且指向第一个元素的指针是'&MyStructVector [0]'。另外,不要忘记先检查矢量是否为空。 – 2012-01-10 17:01:01

回答

3

std::vector的数据被连续应该使用&MyStructVector[0]。但是你不能像你在做的那样复制它。你可以,但是,这样做:

memcpy(pVoid, &MyStructVector[0], sizeof(MyStructVector[0]) * MyStrucVector.size()); 
+0

对于C++ 11,可以使用'MyStructVector.data()'而不是'&MyStructVector [0]'。 – ildjarn 2012-01-10 17:19:36

0

是的std ::向量是连续的。

您预期标准的C语言风格的数组指针

相关问题