文章目录
前言
C++11引入了许多新特性和改进,以提高代码的可读性、可维护性和性能。以下总结自己工作中常用到的特性。
一、自动类型推导
使用auto关键字,可以让编译器根据初始化表达式的类型推导出变量的类型,减少冗余的类型声明,对于有些变量类型较复杂的时候,使用auto很方便,如STL容器迭代等。
int main()
{
vector <int> v1(10, 2);
for (const auto& element : v1) // 此处auto指代int
{
cout << element << endl;
}
return 0;
}
二、for循环简化
该特性用于简化遍历容器或数。
for (auto& element : container) {
// 处理每个元素
}
三、nullptr关键字
提供空指针的明确表示,替代了传统的NULL宏。
int* p = nullptr;
四、智能指针(shared_ptr、unique_ptr)
提供比传统指针更安全、方便的内存管理,省去了new和delete。
std::shared_ptr<int> sharedPtr = std::make_shared<int>(42);
五、Lambda表达式
匿名函数,可以方便地定义简单的函数对象,常用于stl遍历等。
auto add = [](int a, int b) { return a + b; };
六、右值引用和移动语义
允许有效地转移资源的所有权,提高性能。
可以参考该文章:C++移动语义
七、标准线程库
提供了对多线程编程的支持。
#include <thread>
void myFunction() {
// 线程执行的代码
}
int main() {
std::thread myThread(myFunction);
myThread.join(); // 等待线程结束
return 0;
}
八、新的容器和算法
引入了一些新的容器(例如std::array)和算法(例如std::for_each)
std::array<int, 3> arr = {1, 2, 3};
std::for_each(arr.begin(), arr.end(), [](int& elem) {
// 处理每个元素
});