使用vector的c++ 3D数组声明

C++ 3D array declaration using vector

本文关键字:数组 声明 3D c++ vector 使用      更新时间:2023-10-16

我有一些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, ?????)

fill vector构造函数,它构造一个有n个元素的容器,每个元素是value的一个副本。

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

将创建X × Y × Z向量。对于这种类型,您可能希望使用typedef

你可以这样声明

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

其中X, Y, Z为三维向量的维数

NB

最好不要使用vsoftco提到的3D矢量

不要使用这样的嵌套向量来创建3D矩阵。它们很慢,因为内存不再保证是连续的,并且会出现缓存丢失。最好使用平面矢量,从3D映射到1D,反之亦然。