1

我了解“如何在 C++ 中将向量转换为数组

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

我的要求 :: 将(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];

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

提前致谢。

4

3 回答 3

2

其实vectorObject[0]是a CustomClass *&vectorObject[0]a也是CustomClass **

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

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

于 2012-11-01T17:35:43.490 回答
2

是的,向量必须在内存中是连续的,因此表达式“&vectorObject[0]”将返回您可以指向的第一个元素的地址。

于 2012-11-01T17:35:44.270 回答
2

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

std::vector <CustomClass*>vectorObject意味着你有一个 CustomClass Pointers 的向量来获取一个数组

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

CustomClass * FirstEle = Array[0];

于 2012-11-01T17:37:14.730 回答