嵌套在二维数组中的for循环

时间:2019-03-09 14:01:15

标签: c++

我已经学习了如何打印二维数组中的每个元素

int arr[3][3] = {....};
for ( auto &row : arr){
     for ( auto col : row)
        cout<<col<<endl;
}

我知道外部for循环中的&row必须作为参考。否则,row将成为指向数组arr的第一个元素的指针,该元素是3个整数的数组。

基于此,我认为以下代码可以工作,但不能

for( auto row : arr ){
    for ( auto col:*row)
         cout<<col<<endl;
}

它给了我关于内部for循环的错误

no callable 'begin' function found for type 'int'

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

arr的每个元素的类型为int[3]

row是引用时,它将获得类型int (&) [3],可以对其进行迭代。但是当它不是引用时,int[3]数组会衰减为指向其第一个元素的指针,因此row的类型为int*,不能在范围内使用环。

您的代码正在尝试迭代类型为*row的{​​{1}},从而导致错误。