我只是使用一个使用auto的简单代码:
double **PArrays = new double*[3];
count = 0;
for(auto Array: PArrays)
{
Array = new double[6];
for(int i{}; i < 6; i++)
{
if(count == 0)
{
Array[i] = i;
std::cout<<"The value of Array i is: "<<Array[i]<<std::endl;
std::cout<<"The value of PArray is: "<<PArrays[count][i];
}
else if(count == 1)
{
Array[i] = i * i;
}
else
{
Array[i] = i * i * i;
}
}
count += 1;
}
我无法弄清楚为什么PArray [i] [j]中的值,假设[i] [j]在边界内,导致值为零。
此外,编译器抱怨,它说'begin'未在范围中声明,然后指向for循环中的Array auto变量,同样,指向同一个变量,表示'end'未声明。 :
for(auto Array: PArrays)
{
for(auto x: Array)
{
std::cout<<"The value is: "<<x;
}
std::cout<<std::endl;
}
答案 0 :(得分:8)
for(auto Array: PArrays)
为PArrays
中的每个元素提供值副本。因此,您在Array
中所做的任何更改都不会反映在原始容器PArrays
中。
如果您希望Array
成为<{1}}元素的引用,请使用
PArrays
代替。