在学完c++基础篇章之后,又开始学习c++的新特性,包括以下内容:
1.类型推导:
auto var1 = 1; decltype(2) var2;auto可以自动推导出变量的类型,比如例子里给var1赋值为1,那么auto就能自动推导出var1的类型是int型。但是使用auto时必须初始化,不然就会报错,以下是错误示例:
auot var;//没有进行初始化decltype则会让变量var2变为括号里的类型,比如括号里是2,是int型,那么最终var2也是int型,需要注意的是,decltype不像auto,不需要将变量初始化。
2.序列for循环
for(元素:序列){ } 自动依次取出序列里的每一个元素 for(const auto var1:{1,2,3,4,5,6,7,8}){ cout<<var<<endl; }; for(const auto var2:{"a","b","c","d"}){ cout<<var<<endl; };3.lambda表达式
完整格式语法: [capture list](param list) mutable exception->return type{fuction body} 单词意思补充: capture:捕捉 param:参数 mutable:可变的 exception:例外 举个例子: #include <iostream> #include <vector> #include <algorithm> using namespace std; bool compareFunc(int a, int b) { return a < b; }; int main() { vector<int> x1{ 5, 2, 6, 4, 7 }; vector<int> x2(x1); sort(x1.begin(), x1.end(), compareFunc); for (int it : x1) { cout << it << " "; } cout << endl; //lambda 举例 sort(x2.begin(), x2.end(), [](int a, int b)->bool {return a < b;}); for (int it : x2) { cout << it << " "; } cout << endl; return 0; }