当像这样遍历多维数组时:
int arr[2][2] = {{6, 7}, {8, 3}, {5, 2}};
for (auto &row : arr) {
for (auto &cell : row) {
// code
}
}
什么是类型row以及cell为什么必须使用参考?
当您不使用引用数组到指针的转换时,就会启动并且是指向两个s ( )row数组的指针类型。然后内部循环是不正确的,因为要使其工作,您需要:intint(*)[2]
begin具有返回迭代器的end成员函数的类型,begin和end由参数相关查找和返回迭代器找到的自由函数或x分别x + bound用于begin和end,其中x是范围,bound是数组边界。int(*)[2]不满足这些条件。OTOH,当您使用 时auto&,您会得到int(&)[2]第三个项目符号。
PS你有太多的初始化程序int[2][2]。
row是一个ints 的数组。 cell是对 a 的引用int。如果要修改 的内容,则需要引用cell,否则循环变量将是副本。