一、简介
C++11基本上可以说是现在做C++开发的必备技能,但是C++11那么多新的特性很多时候我们并不了解,实际开发中也没有使用。
本文旨在整理C++11中那些常用并且好用的新特性以供大家在日常开发中使用,至于这些新特性的具体用法一般不做过多陈述。
二、新特性
2.1容器
常用的容器包括vector、map、list、set等,这个不多介绍了,如果这些你都没用使用,那C++11跟你基本也没什么关系了。
2.2线程
std::thread以及常用的互斥锁、条件变量等,例如std::mutex、std::lock_guard、std::unique_lock、std::condition_variable、std::future。
2.3智能指针
一定程度上解决内存泄露的良器。shared_ptr、unique_ptr、weak_ptr
2.4类型推导
这个太有用了,很多类型的名字太长了,你根本记不住。新的语法是auto、decltype。
例:std::vector<int> results;
auto x=results.begin();
decltype(results.begin()) y;
2.5基于范围的for循环
例:std::vector<int> results;
results.push_back(1);
for(auto x:results)
cout<<"x="<<x<<endl;
2.6初始化列表
std::initializer_list.
std::vector<int> v = {1, 2, 3, 4};
2.7lambda表达式
具体用法此处不再赘述,挺好用的。
2.8正则表达式
std::regex和std::smatch。如果你经常做一些字符串截取、匹配,那这个挺有用的。
2.9右值引用
主要是为了提高性能的,了解一下就行,一般人开发应该不太常用。