![](/img/trans.png)
[英]How to sort 3D array in c#, with each row is specific to one entry if 1D array?
[英]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.