我需要帮助了解如何在 C ++ 中嵌套for循环以及如何理解正在发生的事情?
有人可以向我解释这些代码行是怎么回事:
#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;
}
我如何教自己循环三重嵌套正在做什么?
答案 0 :(得分:2)
在什么情况下你需要它
通常在
时需要嵌套的for循环您有两个(或更多)维度可供使用
for e.g : working with images, x and y dimensions
working with matrix
您的代码说明:
首先选择要使用的行,
然后在所选行中,遍历所有列
然后你移动第二行
当第一行的所有列都已处理/读取时,外部循环负责移动到第二行
内部for循环遍历外循环选择的行中的列
背后的逻辑:
外部循环等待内部循环完成,然后继续进行下一次迭代。
即。对于外循环的每次迭代,内循环将覆盖其整个迭代。
就像你的情况一样,对于你的外循环的每次迭代 内循环运行4次(每行中的列数)
并且所有行都会发生此过程,即三次(行数)
答案 1 :(得分:1)
通过2D数组的嵌套循环意味着遍历每个元素属于一列,并为每一行重复。
说明:
答案 2 :(得分:0)
在这种情况下,它会迭代一个2d数组,它会让你产生一个由行和列组成的实际表的错觉。所以首先它从索引为0的第一行开始,然后转到第二行for循环(列)并循环它直到它达到最大列并返回到第一个for循环并转到下一行(索引) )等等直到达到最大行然后停止。希望这有点帮助
答案 3 :(得分:0)
任何关于C ++的书都将有一章关于循环。
当你&#34; nest&#34; 两个循环时,外循环控制内循环的完整重复次数。虽然可以嵌套所有类型的循环,但最常见的嵌套循环是for
循环。
当您处理 2-d数组时,即由行和列组成时,可以使用嵌套的for循环。
示例:您有三行四列的二维数组,您需要做的是单独访问数组中的每个元素每行一个元素。
在代码中,你有两个循环,第一个循环遍历行,第二个循环正在做的是迭代遍历列。
这里,外循环中的变量 Row 被初始化为零
Row = 0
,这是你的第0行,然后循环进入内循环,循环从Column=0
运行,直到达到条件Column < MAX_COLS
-
Column = 0;
将cout
即打印Integer[0][0]=34
然后,Column
递增(++Column
)并检查它是否小于MAX_COLS
(Column < MAX_COLS;
)
如果是,那么它会打印Integer[
它所在的行号 ][
它所在的列号 ]
该地点的=
值
这将在MAX_COLS
之前完成,从而显示 4 列。然后循环再次移动到外部循环,增量行(++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
我真的希望你能从中获得一些东西。