C++ 11 实用特性总结

auto

C++11新引入的auto是一个十分好用的特性,它的用途主要是自动类型推断和返回值占位。

  1. 自动类型推断
    auto可以从表达式中推断出“返回值类型”,这里一定要有一个具体的表达式,然后根据表达式计算出结果,将结果返回给auto类型的变量。
int main(){
    auto a;   //错误,无法推断出a的类型

    auto a=10; //正确,可以推断出a的类型(这里有一个疑问,a的类型究竟是int还是long long?难道它能自动扩展类型吗?目前我还没测试,感觉应该是编译器在编译的时候自动确定a的类型的,不然这岂不成了一个bug?)
}

auto的自动类型推断有两个显著优点,其一是可以省去思考变量类型,程序员可以直接将变量定义为auto类型。其二是可以简化过长的类型,例子如下所示。

int main(){
    map<int, map<int,int> > map_;  
    map<int, map<int,int>>::const_iterator itr1 = map_.begin();  
    const auto itr2 = map_.begin();
  
    auto ptr = []()  
    {  
        std::cout << "hello world" << std::endl;  
    };  
}
  1. 返回值占位
    可以将函数的返回值类型设置为auto,如下所示。
int main{
    template <typename T1, typename T2>  
    auto compose(T1 t1, T2 t2) -> decltype(t1 + t2)  
    {  
       return t1+t2;  
    }  
    auto v = compose(2, 3.14); // v's type is double
}
原文地址:https://www.cnblogs.com/miachel-zheng/p/8548653.html