📜  数组 2d 到 1d - C++ (1)

📅  最后修改于: 2023-12-03 14:54:58.267000             🧑  作者: Mango

数组 2d 到 1d

在编程中,经常会遇到将二维数组转换为一维数组的需求。本文将介绍在 C++ 中如何进行二维数组到一维数组的转换。

方法一:按行展开
int main() {
    int arr2d[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    int arr1d[12];

    // 将二维数组按行展开为一维数组
    int index = 0;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 4; j++) {
            arr1d[index++] = arr2d[i][j];
        }
    }

    // 输出结果
    for (int i = 0; i < 12; i++) {
        cout << arr1d[i] << " ";
    }

    return 0;
}

上述代码通过两层循环,将二维数组按行展开为一维数组。其中 index 变量用于记录当前存储位置。

方法二:按列展开
int main() {
    int arr2d[3][4] = {
        {1, 2, 3, 4},
        {5, 6, 7, 8},
        {9, 10, 11, 12}
    };
    int arr1d[12];

    // 将二维数组按列展开为一维数组
    for (int j = 0; j < 4; j++) {
        for (int i = 0; i < 3; i++) {
            arr1d[i * 4 + j] = arr2d[i][j];
        }
    }

    // 输出结果
    for (int i = 0; i < 12; i++) {
        cout << arr1d[i] << " ";
    }

    return 0;
}

以上代码通过两层循环,将二维数组按列展开为一维数组。其中 i * 4 + j 的计算方式用于确定一维数组的存储位置。

总结

无论是按行展开还是按列展开,都可以将二维数组转换为一维数组。根据实际需求选择合适的方法。