【C++】C++11常用特性总结


前言

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) {
    // 处理每个元素
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值