C++11 新特性

  • 用花括号来初始化变量{}

1
2
3
4
int i{10};
int i(10);
int i = 10;
int i = {10};
  • auto类型——编译器通过初始值自动推算变量的类型

    当我们希望编译器根据表达式的结果来确定变量的类型,并且通过表达式结果来赋值
  • decltype类型

当我们希望编译器根据表达式的结果来确定变量的类型,但又不是通过表达式结果来赋值时,用decltype声明变量。

1
decltype(f()) sum = x; //根据函数f()的返回值来确定sum类型,并用x给sum赋值
  • 范围for

    传统的for循环就不多说了,C++11引进的新的for循环——范围for,能够遍历容器或者其他序列的所有元素,更加简洁:

    1
    2
    for (declaration:expression)
    {}

    其中expression是序列,可以是花括号括起来的一组值,数组或者vector\list之类的容器。declaration是个变量,它的类型是expression中元素类型,所以一般用auto类型让编译器自己判断。

    1
    2
    3
    4
    vector<int> v={1,2,3,4};
    for(auto i:v)
    cout<<i<<" ";
    cout<<endl;

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!