• 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 }
  • 相关阅读:
    【动态规划】 EditDistance
    招聘
    算法01 C语言设计
    keras04
    电影《邪不压正》打动我的
    Eclipse
    6.面向对象编程(下)2
    获取一个1-100之间的随机数
    java如何使用帮助文档api
    3.java基础语法(下)
  • 原文地址:https://www.cnblogs.com/pacino12134/p/11245277.html
Copyright © 2020-2023  润新知