2013-02-02 21 views
0

有没有访问我的三维交错数组这样的方式:3D交错数组

jaggedArray[1,2,3]; 

我得到了下面的代码片段至今:

 int[][] jaggedArray = new int[3][] 
     { 
      new int[] { 2, 3, 4, 5, 6, 7, 8 }, 
      new int[] { -4, -3, -2, -1, 0, 1}, 
      new int[] { 6, 7, 8, 9, 10 } 
     }; 

     int[,,] dontWork = new int[,,] // expect 7 everywhere in the last dimension 
     { 
      { { 2, 3, 4, 5, 6, 7, 8 } }, 
      { { -4, -3, -2, -1, 0, 1} }, 
      { { 6, 7, 8, 9, 10 } } 
     }; 
+2

我很困惑。你的问题问如何*访问3D锯齿阵列,但你的代码似乎表明你有问题*创建*它。哪一个? – svick

+0

我寻求一个数组声明,之后我可以像[x,y,z]那样访问锯齿状数组。 我可以访问jaggedArray,如:jaggedArray [0] [1]; // 3例如 第二个数组声明导致错误。但我期望它能像这样工作(或类似)。 – user1772306

+0

你的'jaggedArray'不是3D,而是2D。而唯一的什么来访问它'jaggedArray [i] [j]' – ja72

回答

4

关于第一个问题,你'试图访问锯齿阵列第一个元素的第二个元素的第三个元素:

jaggedArray[1][2][3] 

至于错误,a 3 D数组需要维度的每个元素中相同数量的元素。比方说,为简单起见,你有一个二维交错数组,什么是一个粗略的表示看起来像记忆是:

First row -> 2, 3, 4, 5, 6, 7, 8 
Second row -> -4, -3, -2, -1, 0, 1 
Third row -> 6, 7, 8, 9, 10 

可以看到,每一行被视为一个不同的阵列,并能因此尺寸不同。但是,多维数组不具有此属性。它需要完全填充:

Column : 0 1 2 3 4 5 6 
------------------------------------ 
First row : 2, 3, 4, 5, 6, 7, 8 
Second row: -4, -3, -2, -1, 0, 1 
Third row : 6, 7, 8, 9, 10 

您的表缺少一些单元格,这是没有意义的。您需要为每个维度使用相同数量的元素。

+0

我明白,谢谢。 所以我的第一个数组声明是正确的路要走? – user1772306

+0

@ user1772306就你而言,是的。在大多数情况下,我更喜欢多维数组,但这绝对是一个例外。 – antonijn

2

你得到了用于声明2D锯齿阵列的语法,3D锯齿阵列是其扩展。例如:

int[][][] jagged3d = new int[][][] 
{ 
    new int[][] { new int[] { 111, 112 }, new int[] { 121, 122, 123 } }, 
    new int[][] { new int[] { 211 } } 
} 

但访问它,你需要不同的语法:

jagged3d[0][1][2]