簡體   English   中英

3D鋸齒狀陣列

[英]3D jagged Array

有沒有辦法像這樣訪問我的三維鋸齒狀數組:

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 } }
        };

對於第一個問題,您正在嘗試訪問鋸齒數組第1個元素的第2個元素的第3個元素:

jaggedArray[1][2][3]

至於錯誤,一個3D數組在一個維度的每個元素中期望元素數量相同。 假設,為簡單起見,您有一個2D鋸齒狀數組,它大致表示了內存中的內容:

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

您的表缺少一些單元格,這沒有任何意義。 每個維度需要使用相同數量的元素。

您已經獲得了正確聲明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]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM