c++11特性

c++11特性

本次笔记记录一些常用的c++11特性,以方便查看。

1. 方便的列表快速初始化

int i = int{ 1 };
int arr[5] {1, 2, 3};
vector v{0, 1, 3};
map m{{1, 2}, {3, 4}};
string s{"hello"};
int* a = new int {1};
int * p = new int[] {1, 2, 3};

2. 方便的auto关键字

使用auto关键字可以完成自动推导,auto声明的变量需要立即赋值,auto不能代表一个实际的类型声明。
在c++14中auto关键字还可以作为函数的返回值。但只能用于定义函数,不能用于声明函数。

auto x = 5;    // OK
auto a = new auto(1);  // OK
const auto* p = &x,  u = 6;  // p是const int*类型, u是const int类型
static auto v = 0.1;  // v是double类型
auto int i;  // error
auto s;    // error

int arr[5] = {1, 2, 3, 4, 5};
for (auto i : arr) {
   // 此方式支持数组、字符串、容器、迭代器等
}

3. 简洁的lambda表达式

形式如下:

  • [函数对象参数](操作符重载函数参数)->返回值类型{函数体}
    • []内的参数指的是lambda表达式能获取到的全局变量。如果传入=,则表示传入所有全局变量。
    • ()内的参数指的是lambda表达式的形参。

4. decltype

decltype是用来从一个变量或表达式中获取类型。

int a = 1;
decltype(a) b = a;

其它还有不少特性,先更新这些。

你可能感兴趣的:(c++11特性)