繁体   English   中英

使用基于范围的 for 循环打印多维数组

[英]print a multidimensional array using range based for loop

我正在尝试打印一个二维数组int arr[n][n] ,这就是我尝试过的:

for(int (*x)[n]:arr){
    for(int k:x){
        cout<<x<<" ";
    }
    cout<<endl;
}

我收到以下错误:[Error] cannot convert 'int*' to 'int (*)[3]' in initialization。

这是一个在循环中不使用auto来回答的请求。

int (*x)[n]是一个数组指针。 您不能将数组分配给数组指针。 只需将其更改为数组引用:

for(int (&x)[n] : arr) {
    for(int k : x) {
        std::cout << k << " ";
    }
    std::cout << "\n";
}

我还修正了第三行的错字。

尽量避免使用全局变量,而是通过引用将数组传递给您的函数。 您还应该在基于范围的 for 循环中通过引用来获取内部数组。

#include <iostream>

// a function to display a 2D int array of any sizes
template<size_t N, size_t NN>
void display_2d_array(int (&arr)[N][NN]) {
    for(int (&x)[N] : arr) {   // or simply: for(auto& x : arr) {
        for (int k : x) {
            std::cout << k << ' ';
        }
        std::cout << '\n';
    }
}

int main() {
    int arr[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}};
    display_2d_array(arr);
}

像这样

int main() {
    int arr[3][3] = {1,2,3,4,5,6,7,8,9};

    for (int (&x)[3] : arr) {
        for (int k : x) {
            cout << k << " ";
        }
    }
    cout << endl;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM