C++中的auto类型


C语言中

auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。
例如:

auto a = 3.7;

表示a为一个自动存储的临时变量。

C++语言中

C++ 98标准/C++03标准

同C语言的意思完全一样:auto被解释为一个自动存储变量的关键字,也就是申明一块临时的变量内存。

C++ 11标准

在C++11标准的语法中,auto被定义为自动推断变量的类型。例如:

auto x=5.2;//这里的x被auto推断为double类型
mapm;
for(auto it=m.begin();//这里it被auto推断为map::iterator类型
it!=m.end();++it)
{
//...
}

不过C++11的auto关键字时有一个限定条件,那就是必须给申明的变量赋予一个初始值,否则编译器在编译阶段将会报错。

程序实例

class Solution {
public:
    void rotate(vector>& matrix) {
        int n = matrix.size();
        // C++ 这里的 = 拷贝是值拷贝,会得到一个新的数组
        auto matrix_new = matrix;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n; ++j) {
                matrix_new[j][n - i - 1] = matrix[i][j];
            }
        }
        // 这里也是值拷贝
        matrix = matrix_new;
    }
};