[英]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.