2015-10-09 70 views
0

我有一些C++代码,其中我声明使用“载体”具有以下方法2D阵列C++ 3D阵列声明。使用矢量

这对我需要实现的功能非常有用。 但是我想看看使用3D,XYZ数组的相同方法。 我想我开始:

std::vector<std::vector<std::vector<double>>> 

但我如何申报的尺寸,即Array3D(X,?????)

+0

请介意发布[MCVE]。 –

+2

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

回答

3

填充矢量构造器,它构造具有n个元素的容器,并且每个元件是设置的值的副本。

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

将通过Z向量创建X由Y构成。您可能希望使用typedef这种类型。

+0

图例。发现。那正是我所追求的。干杯 – Fitzy

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

它最好不要使用3D矢量作为由vsoftco

提到不使用这种嵌套矢量创建3D矩阵。它们很慢,因为内存不再保证连续,并且会导致缓存未命中。更好地使用平面矢量和从3D到1D的映射,反之亦然。