在C++中使用auto关键字

mat*_*age 3 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;
    }  
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)

Bat*_*eba 8

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

如果你想Array成为对元素的引用PArrays,那么使用

for(auto& Array: PArrays)

代替.

  • 提出问题的更多理由. (2认同)