有人知道如何将列表转换为 3D 数组吗?我的输入列表实际上始终是 3D 数组的“扁平化”版本,因此我将始终知道数组的维度。任何线索都会很棒
T[,] output = new T[height, width];
for (int i = 0; i < height; i++)
{
for (int j = 0; j < width; j++)
{
output[i, j] = input[i * width + j];
}
}
这是将列表/数组转换为 2D 数组,但我似乎并不想转换为 3D 数组
最佳答案
您需要知道 3D 数组的三个维度的每个维度。假设它们是 d1
、d2
和 d3
,那么您可以使用此代码获取所需的数组,假设 int
数组:
int i, j, k, p;
int[,,] Arr = new int[d1, d2, d3];
p = 0;
for (i = 0; i < d1; i++)
for (j = 0; j < d2; j++)
for (k = 0; k < d3; k++)
a[i, j, k] = lst[p++];
如果您想要与示例类似的解决方案,您可以尝试以下操作:
int i, j, k;
int[,,] Arr = new int[d1, d2, d3];
for (i = 0; i < d1; i++)
for (j = 0; j < d2; j++)
for (k = 0; k < d3; k++)
a[i, j, k] = lst[i * d2 * d3 + j * d3 + k];
关于c# - 在 C# 中将列表转换为 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57788115/