目录
1.引入,观察string和complex的临时对象(右值)竟然可以被赋值
6.5移动语义在unordered_multiset中的表现
1.引入,观察string和complex的临时对象(右值)竟然可以被赋值

a+b可以是右值,临时变量也可以是右值
2.函数的返回值是个右值,C++11之前不能对其取引用

3.右值引用和移动语义



4.不完美转发与完美转发
4.1不完美转发的一个例子

4.2完美转发的底层实现

4.3实现完美转发的方法

5.写一个具有移动语义的类
str._data = NULL;// 本节图一种,防止重复释放,非常重要


6.对具有移动语义的类进行测试
【深入理解C++11:C++新特性解析】第6章 提高性能及操作硬件的能力 测试代码整理
6.0测试代码

6.1移动语义在vector中的表现

这里的MCtor是七百多万次是因为发生了成长,可以拿着源码预先分配然后再测试一下.
6.2移动语义在list中的表现

6.3移动语义在deque中的表现

6.4移动语义在multiset中的表现

6.5移动语义在unordered_multiset中的表现

6.6原因与结论


移动语义其实对vector的影响最大,对其他容器几乎没有什么影响(deque不在两头插值的时候也会影响较大).
本文探讨了C++11引入的右值引用和移动语义,解释了为何函数返回值不能在C++11之前被直接引用,并通过不完美转发和完美转发的概念及其实现方法来阐述参数传递的优化。同时,通过实例展示了移动语义在不同容器如vector、list、deque、multiset和unordered_multiset中的性能提升,强调了移动语义对vector的显著影响。
743





