InfoCode

C++ · 数组

二维与多维数组

理解 C++ 二维数组的行列下标,用每行求和与合法邻居访问的例子练习嵌套遍历和边界判断。

InfoCode 编写 · 技术参考见下文

在应用中练这个知识点 在应用中阅读讲解

行列下标与二维遍历

int a[2][3] 表示 2 行 3 列,共 6 个整数;访问 a[i][j] 时要同时满足 0≤i<2、0≤j<3。

C++ 的多维数组本质上是数组的数组,按行连续存放。常用外层循环枚举行,内层循环枚举列。全部初始化为零可写 int a[2][3] = {};。

三维数组 a[层][行][列] 可表示多张表格,元素总数等于各维大小的乘积。数组过大时要估算内存;标准 C++14 的普通数组维度应是编译期常量,动态尺寸可用 vector。

每行求和与合法邻居

例1:分别计算每一行的和

#include <iostream>
using namespace std;
int main() {
    int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
    for (int i = 0; i < 2; ++i) {
        int sum = 0;
        for (int j = 0; j < 3; ++j) sum += a[i][j];
        cout << sum << endl;
    }
}

输出 6 和 15。sum 在每一行开始时重新置零,若放到外层循环外会变成累计总和。

例2:只访问合法邻居

#include <iostream>
using namespace std;
int main() {
    int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
    int dx[4] = {-1, 1, 0, 0}, dy[4] = {0, 0, -1, 1};
    int x = 0, y = 0, sum = 0;
    for (int d = 0; d < 4; ++d) {
        int nx = x + dx[d], ny = y + dy[d];
        if (nx >= 0 && nx < 2 && ny >= 0 && ny < 3) sum += a[nx][ny];
    }
    cout << sum << endl;
}

左上角只有下方 4 和右方 2 两个合法邻居,输出 6;检查边界后才能访问数组。

提示

先修知识

技术参考

范围说明

本站讲解由 InfoCode 编写,不是官方考纲;参考级别是本站映射,不代表官方等级、认证或参赛资格。练习记录不等于掌握或资格。

参考级别:GESP 4 级(本站映射)

查看赛事关系与路径