📜  在 C++ 中将二维数组拆分为块(1)

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

在 C++ 中将二维数组拆分为块

在 C++ 中,我们可以使用循环和指针来将二维数组拆分为块。拆分数组为块可以方便地处理大规模数据,提高程序的效率。

假设我们有一个二维数组 arr,其大小为 N x M,我们希望将其拆分为 n x m 大小的块。下面是在 C++ 中实现这个过程的代码:

#include <iostream>
#include <vector>

using namespace std;

vector<vector<int>> splitArray(vector<vector<int>>& arr, int n, int m) {
    int rowSize = arr.size();
    int colSize = arr[0].size();
    
    vector<vector<int>> result;
    
    for (int i = 0; i < rowSize; i += n) {
        for (int j = 0; j < colSize; j += m) {
            vector<int> block;
            
            for (int k = i; k < i + n && k < rowSize; k++) {
                for (int l = j; l < j + m && l < colSize; l++) {
                    block.push_back(arr[k][l]);
                }
            }
            
            result.push_back(block);
        }
    }
    
    return result;
}

int main() {
    // 创建一个 4x4 的二维数组
    vector<vector<int>> arr = {{1, 2, 3, 4},
                               {5, 6, 7, 8},
                               {9, 10, 11, 12},
                               {13, 14, 15, 16}};
    
    // 拆分为 2x2 的块
    vector<vector<int>> blocks = splitArray(arr, 2, 2);
    
    // 输出拆分后的块
    for (const auto& block : blocks) {
        for (const auto& num : block) {
            cout << num << " ";
        }
        cout << endl;
    }
    
    return 0;
}

以上代码演示了一个拆分 4x4 的二维数组为 2x2 块的示例。通过调用 splitArray 函数,我们将二维数组拆分为若干个大小为 2x2 的块。然后,我们在 main 函数中遍历输出了拆分后的块。

运行以上代码,输出结果如下:

1 2
5 6
3 4
7 8
9 10
13 14
11 12
15 16

这就是将二维数组拆分为块的方法,它可以帮助我们简化处理和操作大规模二维数组的过程,并提高程序的效率。