刚刚在复习笔记是看到auto for,然后有一个题,将元素的值设置为该元素在整个数组的序号。
#include <iostream>
using namespace std;
int main()
{
constexpr size_t M=3,N=4;
int arr[M][N];
for(size_t i=0;i!=M;++i)
{
for(size_t j=0;j!=N;++j)
arr[i][j]=i*N+j;
}
return 0;
}
以上怎样输出看看对不对呢,当然可以用两层for循环,但是刚刚看了auto for,那就用他吧,于是:
#include <iostream>
using namespace std;
int main()
{
constexpr size_t M=3,N=4;
int arr[M][N];
for(size_t i=0;i!=M;++i)
{
for(size_t j=0;j!=N;++j)
arr[i][j]=i*N+j;
}
for(auto a : arr)//输出数组(error)
{
cout<<a;
cout<<endl;
}
return 0;
}
输出结果是这样的:
三个地址值
以下是正确方法: