• C++中使用嵌套循环遍历多维数组


    C++中使用嵌套循环遍历多维数组

    一维数组:数组元素可以看做是一行数据。

    二维数组:更像是一个表格,既有行数据又有列数据。

    C++没有提供二维数组类型,但用户可以创建每个元素本身都是数组的数组。例如,假设要存储 5 个城市在 4 年间的最高气温,可以这样声明数组

    int maxtemps[4][5];
    
    • 1

    该声明意味着 maxtemps 是一个包含 4 个元素的数组,其中每个元素都是一个由 5 个整数组成的数组,可以将 maxtemps 数组看作由 4 行组成,其中每一行有 5 个温度值。

    表达式 maxtemps[0] 是 maxtemps 数组的第一个元素,其本身就是一个由 5 个 int 组成的数组,maxtemps[0] 数组的第一个元素是 maxtemps[0][0],该元素是一个 int。因此,需要使用两个下标来访问 int 元素。可以认为第一个下标表示行,第二个下标表示列
    假设要打印数组的所有内容,可以用一个 for 循环来改变行,用另一个被嵌套的 for 循环来改变列:

    for ( int row = 0; row < 4; row++ )
    {
        for ( int col = 0; col < 5; ++col )
            cout << maxtemps[row][col] << "\t";
        cout << endl;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对于每个 row 值,内部的 for 循环将遍历所有的 col 值,并在每个值之后打印一个制表符,打印完每行后,打印一个换行符。

    如果您想在程序中遍历一个三行、三列的二维数组,此时,一般的做法是:分别访问数组中的每个元素,每个元素占一行代码。这种方式的可扩展性不强,如果数组变大了,除修改各维的长度外,还需添加大量的代码。然而,使用循环可改变这一点,例如,以下程序所示:

    #include 
    using namespace std;
    
    int main()
    {
        const int NUM_ROWS = 3; 
        const int NUM_COLUMNS = 4;
    
        // 2D array of integers
        int MyInts[NUM_ROWS][NUM_COLUMNS] = { {34, -1, 879, 22}, 
                                             {24, 365, -101, -1}, 
                                             {-20, 40, 90, 97} };
    
        // iterate rows, each array of int
        for (int row = 0; row < NUM_ROWS; ++row)
        {
            // iterate integers in each row (columns)
            for (int column = 0; column < NUM_COLUMNS; ++column)
            {
                cout << "Integer[" << row << "][" << column \
                    << "] = " << MyInts[row][column] << endl;
            }
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    输出:

    Integer[0][0] = 34
    Integer[0][1] = -1
    Integer[0][2] = 879
    Integer[0][3] = 22
    Integer[1][0] = 24
    Integer[1][1] = 365
    Integer[1][2] = -101
    Integer[1][3] = -1
    Integer[2][0] = -20
    Integer[2][1] = 40
    Integer[2][2] = 90
    Integer[2][3] = 97
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    分析:

    第 14~22 行包含遍历二维 int 数组所需的两个 for 循环。二维数组实际上是数组的数组。注意到第一个 for 循环访问行,每行都是一个 int 数组;而第二个 for 循环访问数组中的每个元素,即列。

    注意:

    以上示例程序使用大括号将嵌套的 for 循环括起来了,这只是为了改善可读性。即便没有大括号,嵌套的循环也不会有问题,因为循环语句只是一条语句,而不是复合语句,需要必须用大括号括起。
    
    • 1

    该文章会更新,欢迎大家批评指正。

    推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
    分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
    fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
    TCP/IP,协程,DPDK等技术内容
    点击立即学习:C/C++后台高级服务器课程

  • 相关阅读:
    doccano安装问题
    直流无刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(一)
    php 中 try catch 不起作用解决,捕获不到异常
    树状数组&线段树 的奇妙用法
    猿创征文|Redis事务问题
    优化大型机床装配调度:项目管理软件的应用方法
    什么是智能密码钥匙?Ukey的主要功能? 安当加密
    MySQL-SQL语言
    UG NX二次开发(C#)-获取UI中选择对象的handle值
    提升技能,挑战自我——一站式在线题库小程序
  • 原文地址:https://blog.csdn.net/qq_41317716/article/details/132893633