2013-12-22 100 views
-2

我需要帮助了解如何嵌套for循环在C++以及如何理解正在发生什么?嵌套循环如何工作?

有人能向我解释是怎么回事用这些代码:

#include <iostream> 
using namespace std; 
int main() { 
    const int MAX_ROWS = 3; 
    const int MAX_COLS = 4; 

    // 2D array of integers 
    int MyInts[MAX_ROWS][MAX_COLS] = {{34, -1, 879, 22}, 
             {24, 365, -101, -1}, 
             {-20, 40, 90, 97}}; 

    // iterate rows, each array of int 
    for (int Row = 0; Row < MAX_ROWS; ++Row) { 
     // iterate integers in each row (columns) 
     for (int Column = 0; Column < MAX_COLS; ++Column) { 
      cout << "Integer[" << Row << "][" << Column << "] = " << MyInts[Row][Column] << endl; 
     } 
    } 

    return 0; 
} 

我怎么教自己什么三重嵌套的for循环是干什么的?

+0

此代码来自一本书,但我想知道更多关于它 – user3126681

+5

我建议你通过一些基本的教程。 – Maroun

回答

0

在这种情况下,它迭代了一个2d数组,它给了你一个由行和列组成的实际表的错觉。所以首先它从索引为0的第一行开始,到循环(列)的第二行并遍历它,直到达到最大列并返回到第一个for循环并进入下一行(索引)等,直到达到最大行然后停止。希望这有助于有点

2

在什么情况下,你会需要它

通常你会需要一个嵌套循环时

你有两个(或更多)的尺寸与

工作你的代码的
for e.g : working with images, x and y dimensions 

       working with matrix 

解释:

第一选择一排工作,

那么选择行中,你遍历所有列

,那么你在第二排移动

外环需要的护理当第一行的所有列已经被处理/读取时移动到第二行

内部for循环遍历由外部循环选择的行中的列

背后

逻辑:

用于内循环到结束外环等待,然后移动到它自己的下一次迭代。

即对于外部循环的每次迭代,内部循环将覆盖其整个迭代。

在你的情况下,对于你的外部循环的每次迭代 内循环运行4次(列的每行中数)

和此过程发生于所有的行,即,三次(数行)

1

通过二维数组的嵌套循环意味着遍历每个元素属于一列,并为每一行重复。

说明:

enter image description here

0

任何一本书上C++,将对循环的一章。

当您的“嵌套”两个循环,外部循环控制内部循环的完整重复次数。虽然所有类型的循环都可以嵌套,但最常见的嵌套循环是for循环。

当你正在处理2 - d阵列,也就是说,它由两个行和列的,嵌套的for循环可被使用。

示例:您有三行四列的二维数组,您需要做的是单独访问数组中每个元素每行一个元素。

就像在你的代码中一样,你有两个循环,第一个循环遍历行,第二个循环的作用是遍历列。

这里,变量在外环被初始化为零

Row = 0,这是你的第0行,则循环进入其中环路自Column=0运行,直至达到条件Column < MAX_COLS内环 -

Column = 0;cout即打印Integer[0][0]=34

然后,Column递增(++Column)并检查,如果它小于MAX_COLSColumn < MAX_COLS;) 如果是,则它将打印Integer[的行号,其中它是在][列数,其中它是在]=值在那个地方

这样做直到MAX_COLS因此显示列。然后循环再次移动到外部循环,增量行(++Row)检查值是否小于MAX_ROWS;,并且过程继续,直到MAX_ROWS = 3。然后停下来。

尝试使用不同值的行和列的相同示例,并在调试中运行您的程序。你会明白到底发生了什么。

你得到的输出是:

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 

我真的希望你会从中得到一些东西。