2015-10-09 71 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的映射,反之亦然。