C++11
1. 统一的初始化方法
2. 成员变量默认初始值
3. auto关键字
-
编译器自动判断变量的类型,必须初始化(根据右边初始化内容 判断)
-
类型名长是,可以用auto替代
map<string, int, greater<string> > mp;
auto i = mp.begin;
- C++11中可以把函数返回值类型写在函数后面:
Fun(...) -> type{ ... }
template<class T1, class T2>
auto add(T1 x, T2 y) -> decltype(x + y){
return x + y;
}
TIPS: decltype
可判断变量类型
4. decltype关键字
- 求表达式的类型
5. 智能指针shared_ptr
- 头文件:
<memory>
- 通过
shared_ptr
的构造函数,可以让shared_ptr对象托管一个new运算符返回的指针(托管一个动态分配的存储空间),写法如下:
shared_ptr<T> ptr(new T);
//T可以是 int, char, 类名等各种类型
- 此后ptr就可以像 T* 类型的指针一样来使用,即*ptr 就是一个用new 动态分配的那个对象,而且不必操心释放内存的事情
- 多个shared_ptr对象可以同时托管一个指针,系统会维护一个托管计数,当无shared_ptr托管该指针时,delete该指针
- shared_ptr对象不能托管指向动态分配的数组的指针,否则程序允许会出错
6. 空指针nullptr
7. 基于范围的for循环
int main(){
vector<int> v;
v.push_back(2);
v.push_back(1);
v.push_back(5);
v.push_back(6);
v.push_back(3);
for(auto i : v){
printf("%d", i);
}
//输出:21563
return 0;
}
8. 右值引用和move语义
9. STL 无序容器(哈希表):
- 头文件:
<unordered_map>
- 用法、功能与map一样,但时间效率高(空间换时间)
- 哈希表插入和查找的时间复杂度几乎是常数
10. 正则表达式
- 头文件
<regex>
- 字符串:描述了一种字符串模式(规则)
- 用
regex_match("x", reg)
,判断x是否与正则表达式reg匹配成功(成1否0)
11. Lambda表达式
Q1:
Q2: