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

How to Convert a (vector of pointers) --> (Pointer to an array of pointers)

本文关键字:指针 数组 gt 向量 何转换 转换      更新时间:2023-10-16

我理解"如何将向量转换为c 中的数组"

回答如何将双打(非指针类型)向量转换为数组。

我的要求::将(定制指针的向量)转换为(定制级指针指向定制类指针的数组)。

做以下代码的含义"(指针的向量) ->(指向定制类指针数组的指针)"

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

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

预先感谢。

向量是阵列的包装器,并提供了数组的所有功能,同时还允许阵列增长缩水,知道它的大小和许多其他有用的功能。STD向量的要求之一是其数据以连续的方式像数组一样存储。由于此要求,您可以通过获取第一个元素的地址来获取一系列元素,而不论类型如何。

std::vector <CustomClass*>vectorObject表示您有一个定制指针的向量来获取数组

CustomClass **Array = &vectorObject[0]现在我在向量0中的偏移0处采取了连续的数据段,并将其分配给了定制类的指针指针,请记住,数组和指针在C和C 中深处连接,我现在可以访问指针指针,就像它一样数组

CustomClass * FirstEle = Array[0];

是的,向量必须在内存中是conseq note,因此表达式"&amp; vectorObject [0]"将返回第一个元素的地址,您可以指向。<<<<<<。/p>

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

您在这里做一个有趣的假设,即vector<>依次存储其元素。不过,您可能是对的,所以您的代码应该起作用。

编辑:根据Ben Voigt的评论,标准可以保证vector<>的连续性,因此此方法将100%起作用。