使用向量的C ++ 3D数组声明

时间:2015-10-09 00:31:13

标签: c++ arrays 3d

我有一些C ++代码,我使用“vector”使用以下方法声明2D数组:

    std::vector<std::vector<double>> Array2D(X, std::vector<double>Y);

其中X和Y是数组的维度。

这非常适合我需要实现的目标。 但是我想看一下3D,XYZ阵列使用相同的方法。 我假设我从:

开始
    std::vector<std::vector<std::vector<double>>>

但是如何声明尺寸,即Array3D(X,?????)

2 个答案:

答案 0 :(得分:5)

fill 向量构造函数,它构造一个包含n个元素的容器,每个元素都是提供的值的副本。

std::vector<std::vector<std::vector<double>>> Array3D(X, std::vector<std::vector<double>>(Y, std::vector<double>(Z)));

将通过Z向量创建X.您可能希望将typedef用于此类型。

答案 1 :(得分:1)

您可以声明

 std::vector<std::vector<std::vector<double> > > Array3D(X, std::vector<std::vector<double> >(Y, std::vector<double>(Z)));

其中X,Y,Z是3D矢量的维度。

<强> NB

最好不要使用vsoftco

中提到的3D矢量
  

请勿使用此类嵌套矢量来创建3D矩阵。它们很慢,因为内存不再保证是连续的,你会得到缓存未命中。更好地使用平面矢量并从3D到1D映射,反之亦然。