如何在 C++20 中使用范围式 for 循环遍历多维数组?

在 C++20 之前,遍历多维数组通常需要嵌套循环或手动计算索引,代码可读性不高。C++20 引入了 std::ranges::views::allstd::ranges::subrange,配合 std::ranges::for_eachstd::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(在 `

` 中)可以把二维容器直接展平成一维视图: “`cpp #include #include int main() { for (auto val : std::ranges::views::all(arr) | std::ranges::views::flatten) { std::cout ` 并使用上述语法,即可轻松遍历任意维度的 C++ 原生数组。

发表评论