需要明确一点c++ 中没有真正意义上的多维数组,多维数组本质上是数组的数组
int arr[10][10];// 定义了一个名为arr的数组,该数组含有10个元素,每个数组元素是大小为10 且类型为int的数组。
使用auto 遍历二维数组
int arr[10][10];
size_t cnt = 0;
/* 使用引用 row 是 int [10] 类型的引用 如果没使用引用那么 row 的类型为int*
*/
for(auto &row :arr)
for(auto &col :row)
{ col = cnt;
cnt++;
}
如果将第一行遍历替换为 for(auto row :arr) 那么row 就会变成int*。因为编译初始化row时
会自动将这些数组形式的元素(和其他类型的数组一样)转换成指向该数组内首元素的指针。