我只是使用一个使用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;
}
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么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;
}
Run Code Online (Sandbox Code Playgroud)
for(auto Array: PArrays)为您提供每个元素的值副本PArrays.因此,您所做的任何更改Array都不会反映在原始容器中PArrays.
如果你想Array成为对元素的引用PArrays,那么使用
for(auto& Array: PArrays)
代替.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |