在 C++20 之前,遍历多维数组通常需要嵌套循环或手动计算索引,代码可读性不高。C++20 引入了 std::ranges::views::all 与 std::ranges::subrange,配合 std::ranges::for_each 或 std::ranges::views::flatten,可以把多维数组视为一维流,从而使用单层范围式 for 循环完成遍历。
1. 典型二维数组
int arr[3][4] = {
{1, 2, 3, 4},
{5, 6, 7, 8},
{9,10,11,12}
};
2. 传统嵌套循环
for (int i = 0; i < 3; ++i)
for (int j = 0; j < 4; ++j)
std::cout << arr[i][j] << ' ';
3. 使用 std::views::flatten
C++20 提供了 std::views::flatten(在 `