我已经学习了如何打印二维数组中的每个元素
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'
我在这里错过了什么吗?
答案 0 :(得分:2)
arr
的每个元素的类型为int[3]
。
当row
是引用时,它将获得类型int (&) [3]
,可以对其进行迭代。但是当它不是引用时,int[3]
数组会衰减为指向其第一个元素的指针,因此row
的类型为int*
,不能在范围内使用环。
您的代码正在尝试迭代类型为*row
的{{1}},从而导致错误。