C++11的新特性
程序员文章站
2024-03-14 11:06:10
...
1.统一的初始化方法
int arr[3]{1, 2, 3};
vector<int> iv{1 ,2, 3};
map<int, string> mp{{1, "a"}, {3, "b"}};
int* p = new int[6]{1, 2, 3};
2.成员变量有初始值
class Test{
public:
int m_ = 100;
};
3.auto关键字
用于定义变量,编译器可以自动判断变量的类型
4.decltype关键字
求表达式的类型
5.智能指针shared_ptr
头文件
通过shared_ptr的构造函数,可以让shared_ptr对象托管一个new运算符返回的指针
shared_ptr <T> ptr(new T);
多个shared_ptr对象可以同时托管一个指针,系统会维护一个托管计数。当无shared_ptr托管该指针时,delete该指针
shared_ptr对象不能托管指向动态分配的数组的指针,否则程序运行中会出错。对象行吗???ok
一些方法:
6.空指针nullptr
7.基于范围的for循环
int arr[] = {1 ,2, 3};
for(int& e:arr)
e *= 10;
for(int e: arr)
cout << e << endl;
8.右值引用和move语义
右值:一般来说,不能取地址的表达式,就是右值,能取地址的,就是左值
不用深拷贝,提高效率
1.无序容器(哈希表)
2.正则表达式
包含头文件<regex>
3.Lambda表达式
形式:
[外部变量访问方式说明符](参数表)->返回值类型
{
语句组
}
sort(a, a+4, [](int x, int y)->bool{ return x%10 < y%10; });//方便吧