📅  最后修改于: 2023-12-03 14:50:52.209000             🧑  作者: Mango
在 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
这就是将二维数组拆分为块的方法,它可以帮助我们简化处理和操作大规模二维数组的过程,并提高程序的效率。