C++ 中多维数组的 Foreach 循环

AK-*_*CHP 3 c++ arrays foreach multidimensional-array

编译以下 cpp 代码时出现错误:

int x[][2]{{1, 2}, {3, 4}};

for (int e[2] : x) {
    std::cout << e[0] << ' ' << e[1] << '\n';
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下错误:

error: array must be initialized with a brace-enclosed initializer

我确实替换了int e[2]并且auto e有效,但我想使用实际类型。

有什么解决方法吗?

app*_*ple 5

正确的固定大小声明是

for (int(&e)[2] : x) {}
Run Code Online (Sandbox Code Playgroud)

或者你可以用auto&它来推断

for (auto& e : x) {} // same as above
Run Code Online (Sandbox Code Playgroud)

注意:auto不会推导出相同类型

for (auto e : x) {} // e is int*
Run Code Online (Sandbox Code Playgroud)