簡體   English   中英

C#中的鋸齒狀多維數組

[英]Jagged Multidimensional Arrays in C#

注意:我將“ jmArray[][,]多維”定義為jmArray[][,]

我試圖圍繞這種類型的數組使用我的頭,以保持簡單的坐標,一對整數。 該數組將用於創建3x3網格,因此在我的腦海中,我看到:

jmArray[N][X,Y]

其中N是網格切片的編號,X,Y是切片的坐標。 所以:

jmArray[2][3,2]

意味着切片2位於坐標3,2處。

我一直在嘗試為每個切片分配值,但是我被卡在某處...

jmArray[0][,] = new int[1,2] {{3,3}};

有點幫助,了解如何正確執行此操作會很好。

您可以這樣實現:

int[][,] jmArray = new int[3][,];
jmArray[0] = new int[1,2] {{3,3}};

除非我對您有誤解,否則更簡單的方法是創建一個大小為3元組的字典。

var space = Dictionary<Tuple<int, int, int>, TPointValue>;

// Fill up space with some points
space[Tuple.Create(3,3,1)] = new TPointValue(42);

// Retrieve point from 3d space
TPointValue point3_3_1 = space[Tuple.Create(3,3,1)];

我要承認的是,盡管這種方法確實使點的分配和檢索非常有效,但是與鋸齒狀陣列相比,這種方法使檢索平面或基准線麻煩且效率低下。

但是 :如果將這種數據結構包裝在自己的類中,該類提供用於訪問平面/線等的方法,則可以非常輕松有效地計算出事先獲取任何點集所需的鍵。 平面/線/多邊形內的那些,然后非常有效地訪問這些點。

PS:請注意,一點上的值不必像TPointValue這樣的奇特類型,它可以只是stringfloat或任何您喜歡的值。

代替復雜的數組,使用具有有意義名稱的簡單類可能會更好:

class Slice
{
    int X = 0;
    int Y = 0;
    public Slice()
    {
    }
    public Slice(int _X, int _Y)
    {
        X = _X;
        Y = _Y;
    }
}

Slice[] Slices = new Slice[9];

數組的索引將是切片的位置。

暫無
暫無

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

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