如何转换(指针矢量) - > (指向数组的指针)

时间:2012-11-01 17:28:28

标签: c++ arrays pointers vector

我理解“How to convert vector to array in C++

回答如何将双精度矢量(NON POINTER TYPE)转换为数组。

  

我的要求::将(CustomClass指针的向量)转换为(一个CustomClass指针数组的CustomClass指针)。

以下代码是否表示“(指针向量) - >(指向CustomClass指针数组的指针)”

std::vector <CustomClass*> vectorObject(SizeOfVector);  // Here each element of the vector //is a pointer to CustomClass object.
CustomClass* customClassArray = &vectorObject[0];

如果我错了,请纠正我。请帮助使用代码段。

提前致谢。

3 个答案:

答案 0 :(得分:2)

实际上vectorObject[0]CustomClass *,因此&vectorObject[0]CustomClass **

你在这里做了一个有趣的假设,vector<>按顺序存储它的元素。你可能是对的,所以你的代码应该可行。

编辑:根据Ben Voigt的评论,vector<>的连续性由标准保证,因此这种方法将100%有效。

答案 1 :(得分:2)

是的,向量需要在内存中连续,因此表达式“&amp; vector Object [0]”将返回第一个元素的地址,您可以在其中指向。

答案 2 :(得分:2)

Vector是数组中的一个包装器,它提供了数组的所有功能,同时还允许数组缩小,知道它有多大以及许多其他有用的功能。 std向量的一个要求是它的数据以类似数组的连续方式存储。由于这个要求,您可以通过获取第一个元素的地址而不管类型来获取元素数组。

std::vector <CustomClass*>vectorObject意味着您有一个CustomClass指针向量来获取数组

CustomClass **Array = &vectorObject[0]现在我已经在向量中的偏移0处取了连续的数据段,并为它分配了一个customclass的指针指针,记住数组和指针在c和c ++中深度连接我现在可以访问指针指针好像是一个数组

CustomClass * FirstEle = Array[0];