在C ++中使用auto关键字

时间:2017-07-14 12:31:25

标签: c++ c++14

我只是使用一个使用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;
    }

1 个答案:

答案 0 :(得分:8)

for(auto Array: PArrays)PArrays中的每个元素提供副本。因此,您在Array中所做的任何更改都不会反映在原始容器PArrays中。

如果您希望Array成为<{1}}元素的引用,请使用

PArrays

代替。