二维数组,IF条件检查

时间:2012-08-02 14:23:06

标签: c++ arrays multidimensional-array

使用C ++ 2D数组编码时遇到了问题。 只是一个小问题,下面的代码是什么意思?

...

if(array[x][y] >= 9){

...

}

...

这是否意味着当数组的x和y之和大于或等于9时,那么只有IF的主体会运行?要么 ........?

请解释并提供一些简单的例子。

3 个答案:

答案 0 :(得分:1)

数组是二维的,它表示array[x][y]

处的元素 与不需要1个索引的1D数组不同,2D数组需要array[x][y]形式的2个索引,可能是嵌套for循环。

您可以像这样迭代这样的数组

for (int x = 0; x < arrayLength; x++) {
    for (int y = 0; y < array[x]Length; y++) {

    // do something with array[x][y]

    }  
}

其中arrayLength是数组的长度,array [x] length是array [x]的长度。

因此,在参考您发布的代码时,它正在测试以查看2D数组的成员是否大于或等于9.

答案 1 :(得分:1)

好的,让我们从基础开始吧。

1D阵列

你怎么能想象一个正常的阵列?你可以说普通数组就像一个数字行:

|-------------------------------| where every - is one element in your array

左边第一个' - '是myArray [0]的元素('|'只是象征着它有一个开头和一个结尾)。

2D阵列

2D数组可以显示为棋盘,书架或包含列和行的表。

|-------------------------------|
|-------------------------------|
|-------------------------------|
|-------------------------------|

就像国际象棋一样,你需要2个值来解决一个元素。如果您只指定一个值,则编译器可能知道您的值的行但不知道其列(或反过来)。这意味着您需要x和y坐标(这是坐标系的视觉类比)。为了解决一个值,你必须这样做:

myArray [x] [y]其中x可以是我们棋盘的行,y是列。

在您的情况下,您的2D数组很可能填充整数。 'if'语句检查myArray [x] [y]中存储的值是否大于9.如果myArray [x] [y]大于9,则此语句返回true,内部代码将被执行。

执行'if'语句中的代码后,程序将继续执行if语句后的代码。 2D数组可以理解为包含数组的数组。

如果您认为三维数组是可能的,那么您是对的。在这里你需要3个坐标来描述一个点,因为你有深度,高度和长度(这里我说的是视觉长度而不是元素总量的长度。)

我不知道这是否有帮助,但这当然是一种解释多维数组如何工作的非常直观的方法。

示例

int myArray[3][3] = {{1, 2, 3},   // row 0
                     {4, 5, 6},   // row 1
                     {7, 8, 10}}; // row 2

在这种情况下,只有当x = 2且y = 2时才会执行if语句,因为myArray [2] [2] = 10

答案 2 :(得分:0)

这意味着“如果坐标(x,y)处的元素大于或等于9 ......”。

没有添加操作。该数组可能以最小尺寸(x + 1,y + 1)声明。

    int array[2][2] = {{12, 6}, {3, -2}};

    int x=1, y=0;

    if(array[x][y] >= 9){...}    // array[1][0] equals 3, condition is false