博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++11 std::move() 的使用
阅读量:4628 次
发布时间:2019-06-09

本文共 889 字,大约阅读时间需要 2 分钟。

std::move函数可以以非常简单的方式将左值引用转换为右值引用。(左值、左值引用、右值、右值引用 参见:)

通过std::move,可以避免不必要的拷贝操作。

std::move是为性能而生。

std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。

如string类在赋值或者拷贝构造函数中会声明char数组来存放数据,然后把原string中的 char 数组被析构函数释放,如果a是一个临时变量,则上面的拷贝,析构就是多余的,完全可以把临时变量a中的数据直接 “转移” 到新的变量下面即可。

#include 
#include
#include
#include
int main(){ std::string str = "Hello"; std::vector
v; //调用常规的拷贝构造函数,新建字符数组,拷贝数据 v.push_back(str); std::cout << "After copy, str is \"" << str << "\"\n"; //调用移动构造函数,掏空str,掏空后,最好不要使用str v.push_back(std::move(str)); std::cout << "After move, str is \"" << str << "\"\n"; std::cout << "The contents of the vector are \"" << v[0] << "\", \"" << v[1] << "\"\n";}

转载于:https://www.cnblogs.com/yoyo-sincerely/p/8658075.html

你可能感兴趣的文章
GIT使用方法
查看>>
第三阶段 10_JavaWeb基础_
查看>>
SpringBoot------添加保存时自动编译插件
查看>>
YUV和RGB格式分析
查看>>
2018 蓝桥杯省赛 B 组模拟赛(一)-年龄
查看>>
【NOIP2015提高组Day1】 神奇的幻方
查看>>
C#入门详解(4)
查看>>
PHP Memcached应用实现代码
查看>>
码云多人协作
查看>>
python复习冒泡排序
查看>>
裁员浪潮,互联网人该何去何从?
查看>>
Python Day 01
查看>>
Android5.0之CoordinatorLayout的使用
查看>>
U盘安装Ubuntu14.4时遇到分区问题记录
查看>>
servlet工作原理解析
查看>>
api工程IOS学习:在IOS开发中使用GoogleMaps SDK
查看>>
函数功能MATLAB
查看>>
Bzoj1123 Blockade
查看>>
Python之Mysql及SQLAlchemy操作总结
查看>>
数据库搜索与索引
查看>>