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