c# - 在 C# 中将列表转换为 3D 数组

标签 c# list multidimensional-array

有人知道如何将列表转换为 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 数组的三个维度的每个维度。假设它们是 d1d2d3,那么您可以使用此代码获取所需的数组,假设 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/

相关文章:

c# 固定数组 - 从哪个结构读取最快?

c - 初始化二维数组

html - HTML 列表中的第一个列表项显得稍高

java - 比较 2 个列表中的元素时如何避免 O(N^2)?

python - 元组列表,第一个元组作为键,按键分组到字典中

javascript - AJAX post 请求报告失败,但实际上成功

c++ - 如何从嵌套的 std::initializer_list 初始化 2D C 样式数组?

c# - C# 中的数字格式 - 单独的 int 和小数部分

c# - 从自托管服务使用 HTTP POST

c# - Visual Studio 2015 Convert.ToDouble 在尝试观看 lambda 表达式时出错