c++标准库功能的强大,在刷LeetCode的时候深刻的体会到,所以把看这本书的重要知识点摘抄上来:
c++新特性:
c++11的更新是一个很大的革新,所以先了解一下c++11的新特性,以及很多很实用的东西:
1. 以auto完成自动类型推导:
auto i = 42 //此时i是一个int型变量
以auto声明的变量,需要跟据其初值推导其变量类型,所以需要对其进行初始化。
2. 列表初始化:
std::vector<int> v{1,2,3,4,5,6,7};
3. range-based for 循环:
std::vector<int> v{1,2,3,4,5};
for(auto c:v){
std::cout << c << std::endl;
}
4. lambda:
这个关键字在之前学习《Python学习手册》也看到过,真的很好用。
一个lambda表达式一个可调用的代码单元。我们可以把它理解为一个为命名的内联函数。与任何函数类似,一个lambda具有一个返回类型、一个参数列表和一个函数体。但与函数不同的是,lambda可能定义在函数内部。
[capture list](parameter list) ->return type{function body}
捕获列表是一个lambda所在函数中定义的局部变量的列表(通常为空);其余与正常函数类似,但与普通函数不同的是,lambda必须使用尾置返回。且lambda不能有默认参数。
例:
[](const string & a, const string &b)
{ return a.size() < b.size();}
例:
stable_sort(words.begin(), words.end(),
[](const string &a, const string &b)
{ return a.size() < b.size();})
值捕获:引用捕获 隐式捕获& =
4. decltype类型指示符:
decltype(f()) sum = x; //sum的类型就是f()的返回类型
一些一般概念:
1. namespace std:
2. 头文件:
3. error and exception:
4. callable object
5. 并发与多线程
一些通用工具:
1. pair and tuple
2. 智能指针
3. 辅助函数 min max minmax swap
4. 常用c函数