• std::move


    <utility>

    将一个左值强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义。

    C++ 标准库使用比如vector::push_back 等这类函数时,会对参数的对象进行复制,连数据也会复制.这就会造成对象内存的额外创建, 本来原意是想把参数push_back进去就行了,通过std::move,可以避免不必要的拷贝操作。

    std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝所以可以提高利用效率,改善性能.。

    对指针类型的标准库对象并不需要这么做。

     1 #include <utility>
     2 #include <string>
     3 using namespace std;
     4 int main(){
     5     string str="hello";
     6     vector<string> v;
     7     v.push_back(str);//实际上会调用常规拷贝构造函数,拷贝数据,新建一个str
     8     
     9     v.push_back(move(str));//直接调用移动构造函数,掏空str,之后str内容就空了,别再使用str
    10 }
  • 相关阅读:
    php中的form表单
    http
    PHP做的简单计算器
    用Js写贪吃蛇
    ajax简单操作,验证用户名是否可以
    关于ARM PC值
    阅读脚本控制pwm代码
    编译选项
    关于机器码、原码、反码、补码
    makefile学习之函数
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11245277.html
Copyright © 2020-2023  润新知