具有4个括号的数组的维数是多少

时间:2013-04-22 23:41:17

标签: c++ arrays multidimensional-array

说我有一个类似的数组:

       double theArray[2][5][3][4];

我不太了解最后一个维度。

 first is [][][][][]

 second is [][][][][]
           [][][][][]

 third would make it 3 dimensional,

第四个会做什么?

6 个答案:

答案 0 :(得分:6)

C ++(就像之前的C一样)并不真正拥有多维数组,所以它们都不是真正的2,3,4(等)维度。

相反,C ++提供的是数组,数组数组等。有四组括号,你有一个数组数组的数组。

现在,忘记我说的任何一个 - 在C ++中使用数组很少是个好主意,并且使用数组数组通常会更糟。如上所示,伪4D阵列的情况要好很多倍。只是不要这样做。

如果您需要模拟2D,3D等阵列,请使用类。它使生活变得更加简单。

答案 1 :(得分:4)

第四个维度是时间。它与三个空间维度一起形成时空

答案 2 :(得分:1)

double theArray[2] ==> [][]

double theArray[2][5] ==> [][], [][], [][], [][], [][]

double theArray[2][5][3] ==> [][], [][], [][], [][], [][]
                             [][], [][], [][], [][], [][]
                             [][], [][], [][], [][], [][]

double theArray[2][5][3][4] ==> .............

答案 3 :(得分:1)

在C和C ++中,二维数组只是一个数组数组 - 仅此而已。

三维数组是数组数组的数组。

你有什么:

double theArray[2][5][3][4];

是一个4维数组,是数组数组的数组。

如果您在考虑空间维度方面,对于任何数组维度没有任何物理意义。它们只是有序的元素序列,其中序列本身可能是序列,依此类推。

没有限制(编译时和运行时存储空间除外,可能编译器施加的某些任意限制)对数组可以具有的维数。

对于二维数组,您可以考虑在矩形网格中布置的元素:

[][][][]
[][][][]
[][][][]

但实际上整个事情都是线性的,每一行都紧跟在前一个内存之后。

[][][][][][][][][][][][]
- row0 -- row1- - row2 -

您还可以构建其他类似于多维数组的数据结构。如果使用指针,指针数组等,则元素和行可以通过内存任意分散。但这对大多数目的来说并不重要。

comp.lang.c FAQ的第6节对C中数组和指针之间经常混淆的关系进行了很好的讨论,其中大多数也适用于C ++。

C ++提供了其他数据结构,作为标准库的一部分,比C风格的数组更灵活,更健壮。

答案 4 :(得分:0)

假设我们想要使用多维数组来跟踪世界人口。

// Population per country: 
int population[ C ]; 
// the 1st dimension is the country index, C is the number of countries

// Population per country per state: 
int population[ C ][ S ];
// the 2nd dimension is the state index, S is the max number of states per cuntry

// Population per country per state per county: 
int population[ C ][ S ][ N ];
// the 3rd dimension is the county index, N is the max number of county per state

// Population per country per state per county per city: 
int population[ C ][ S ][ N ][ I ];
// the 4th dimension is the city index, I is the max number of city per county

// Population per country per state per county per city per gender

// Population per country per state per county per city per gender per age-group

注意:这只是一个例子,它肯定不是模拟人口的最佳方式。

注2:请参阅Jerry Coffin的回答。

答案 5 :(得分:0)

我想要一个技巧来想象什么是4维数组(数学术语中的4维矩阵)你可以将它表示为立方体数组(如果尺寸不相等,则矩形平行六面体更准确)。

正如三维数组可以表示为矩阵数组