说我有一个类似的数组:
double theArray[2][5][3][4];
我不太了解最后一个维度。
first is [][][][][]
second is [][][][][]
[][][][][]
third would make it 3 dimensional,
第四个会做什么?
答案 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维矩阵)你可以将它表示为立方体数组(如果尺寸不相等,则矩形平行六面体更准确)。
正如三维数组可以表示为矩阵数组