簡體   English   中英

從 3D 數組 C# 獲取一維數組

[英]Getting a 1D array from a 3D array C#

我有一個帶有一些值的 8x8x3 數組。 我想做的只是列出一維 arrays。

到目前為止我得到了什么:

int[] packIt(int[,,] data, int factor) {
            List<int[]> toReturn = new List<int[]>();
            int[] test = data[0, 0];

因此,除非我遺漏了什么,否則我會列出一維 arrays 並嘗試在 data[0, 0] 處放入一維數組(到目前為止,測試只是一個占位符)。 我得到的錯誤是“錯誤的索引數量”,但是如果我按照 data[0,0,0] (沒有錯誤),我只會在該位置獲得 1 值。 我可以手動完成,但我只是想知道是否有我正在嘗試做的功能的實現,因為我會經常使用它。 謝謝一堆。

您無需執行任何特定操作即可將 3D 陣列轉換為一維陣列; 你可以枚舉它:

foreach(var x in multiDim)
  ...

這將打印 1 到 8:

            var x = new int[2,2,2];
    x[0,0,0] = 1;
    x[0,0,1] = 2;
    x[0,1,0] = 3;
    x[0,1,1] = 4;
    x[1,0,0] = 5;
    x[1,0,1] = 6;
    x[1,1,0] = 7;
    x[1,1,1] = 8;
    
    foreach(int i in x)
      Console.WriteLine(i);

為此,您可以直接枚舉數組中的任何內容:

var out = new List<int[]>();
var arr = new int[chunkSize];
out.Add(arr);
var idx = 0;
foreach(var x in miltiDimArray){
  if(idx == chunkSize){
    out.Add(arr = new int[chunkSize]);
    idx = 0;
  }
  arr[idx++] = i;
}

請注意,如果塊大小不分為元素數,我不會嘗試使刻度數組更小。 idx 將有一個殘差值,如果這很重要,您可以使用它來計算調整最后一個數組的大小

暫無
暫無

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

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