[英]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.