c++ - 使用 foreach 迭代多维数组

标签 c++ arrays

当像这样迭代多维数组时:

int arr[2][2] = {{6, 7}, {8, 3}, {5, 2}};
for (auto &row : arr) {
    for (auto &cell : row) {
        // code
    }
}

rowcell 的类型是什么?为什么必须使用引用?

最佳答案

当您不使用引用数组到指针的转换时,row 的类型为指向两个 int 数组的指针 ( int(*)[2]).内部循环的格式不正确,因为要使其工作,您需要:

  • 具有返回迭代器的 beginend 成员函数的类型,
  • beginend 通过参数相关查找找到的自由函数并返回迭代器或
  • 对于数组类型,xx +bound 分别用于 beginend,其中x 是范围,bound 是数组边界。

int(*)[2] 不满足这些条件。 OTOH,当您使用 auto& 时,您会得到 int(&)[2] 并且第三个项目符号适用。

附注int[2][2] 的初始值设定项过多。

关于c++ - 使用 foreach 迭代多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18705861/

相关文章:

c++ - int 和字符串解析

ios - 字符串上的 XCTAssertEqual 总是失败

php - 如何在 str_replace() 的搜索参数中获取数组中的数值以按照我期望的方式进行映射?

javascript:从一个数组中取出项目并将其放入另一个数组中

由 sql 行组成的 PHP 数组进行 json_encode

python - R `summary` python中最接近的等价函数

c++ - 在 Xcode 上用 C++ 创建模板类

c++ - 使用 OpenGl 和 C++ 的 2D 平台游戏相机

c++ - Chrome 如何知道 Flash 何时崩溃?

c++ - 函数模板参数