2012-01-10 2 views
0

이 방법배열이 필요한 메서드 호출에서 벡터를 활용하려면 어떻게해야합니까? 예를 들어

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

이 I 배열이 SA 사이즈를 미리 정의 된 인스턴스에 일단이 메소드를 호출 때문에 잘 사용. 그러나 '배열'의 정보를 동적으로 변경해야하므로 벡터 대신 사용합니다. 벡터의 정보는 연속적으로 보장됩니까?

나는

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

제 생각에는 * MyStructVector가 작동하지 않습니다. 어떻게 하나의 요소 크기를 얻을 수 있습니까? 또는 문자 그대로 sizeof (MyStructVector) 할 수 있습니까? – SirYakalot

+1

하나의 요소의 크기는'sizeof MyStructVector [0]'; 첫 번째 요소에 대한 포인터는'& MyStructVector [0]'입니다. 또한 먼저 벡터가 비어 있지 않은지 확인하는 것을 잊지 마십시오. –

답변

3

데이터는 연속되는 예상 위치를

당신은 &MyStructVector[0]를 사용해야합니다. 그러나 당신이하고있는 것처럼 그것을 복사 할 수는 없습니다. 그러나 당신은 이것을 할 수 있습니다 :

+0

C++ 11의 경우,'& MyStructVector [0]'대신에'MyStructVector.data()'를 사용할 수 있습니다. – ildjarn

0

예 표준 : : 벡터 연속이다 뭔가를 할 수 있습니다. 당신은 표준 C 스타일 배열 포인터에게 std::vector에서