当前位置: 首页 > wzjs >正文

哈尔滨建设银行网站建筑方案设计

哈尔滨建设银行网站,建筑方案设计,wordpress如何绑定域名,如何实现响应式网页C中的右值引用与移动语义的理解 从三个层面出发,什么是右值引用和移动语义;为什么需要右值引用和移动语义、std::move作用 一、什么是右值引用与移动语义 右值引用:C中定义的对右值的引用 int && a 5; // 这里a的地址就是这个语…

C++中的右值引用与移动语义的理解

从三个层面出发,什么是右值引用和移动语义;为什么需要右值引用和移动语义、std::move作用

一、什么是右值引用与移动语义

右值引用:C++中定义的对右值的引用

int && a = 5; // 这里a的地址就是这个语句中5的地址
int b = 5; // 这里b的地址和这个语句中5这个临时变量

在这里插入图片描述

**移动语义:**对于含有指针类型作为成员数据的类,使用移动而不是深拷贝进行初始化或者赋值。具体体现就是类的移动构造函数和移动赋值函数;也就是传入一个右值引用(就相当于给这个临时变量),然后让本对象的指针的值直接等于该临时对象指针的值,然后将临时对象的指针再置为空。这样避免了深拷贝那样的内存开销。

二、为什么需要右值引用和移动语义

为了避免像深拷贝操作那样的内存开销。比如现在我有一个类,其定义如下:

class T{char* s; //字符串
public:T(){s=nullptr;}T(const char* s){this->s = new char[strlen(s)+1]; //新分配内存strcpy(this->s, s); //为新分配内存赋值}// 拷贝构造函数T(const T & t){this->s = new char[strlen(t.s)+1]; //新分配内存strcpy(this->s, t.s); //为新分配内存赋值}// 移动构造函数T(T && t){this->s = t.s;t.s = nullptr;}
};

对于T t(T("ikun2")); 语句,没有移动构造函数的话,会调用深拷贝构造函数T(const T & t),会新分配内存。但是如果有移动构造函数的话,该语句会调用移动构造函数,就不会进行新分配内存的操作。

三、std::move

std::move用于将一个对象转为右值引用。相当于告诉编译器这个对象我后续不会再使用,你可以把这个对象占用的内存给分配掉。

void Tensor<float>::Padding(const std::vector<uint32_t>& pads,float padding_value) {CHECK(!this->data_.empty());CHECK_EQ(pads.size(), 4);// 四周填充的维度uint32_t pad_rows1 = pads.at(0);  // upuint32_t pad_rows2 = pads.at(1);  // bottomuint32_t pad_cols1 = pads.at(2);  // leftuint32_t pad_cols2 = pads.at(3);  // right// 请补充代码arma::fcube new_data(pad_rows1+pad_rows2+this->data_.n_rows, pad_cols1+pad_cols2+this->data_.n_cols, this->data_.n_slices);new_data.fill(padding_value);new_data.subcube(pad_rows1, pad_cols1, 0,pad_rows1+this->data_.n_rows-1, pad_cols1+this->data_.n_cols-1,this->data_.n_slices-1)=this->data_;this->data_ = std::move(new_data);
}

比如这个函数最后使用this->data_ = std::move(new_data);因为new_data后续不会再被用到,且为了this->data不用再重新分配内存来接收new_data的值,所以使用std::move减小内存开销,提高性能;


文章转载自:

http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://00000000.rhjhy.cn
http://www.dtcms.com/wzjs/615843.html

相关文章:

  • 建商城网站需要多少钱html5 国内网站建设
  • 阜南县城乡建设局官方网站无锡网站建设套餐
  • 福州模板建站定制网站宿州网站建设报价
  • 中国那个公司的网站做的最好看汕头新闻头条最新消息
  • 网站后台如何做产品展示网站建设最好用什么语言
  • 天津百度做网站多少钱镇江vi设计
  • 装修设计网站哪个好用正规网站建设公司多少钱
  • 做家具城网站的意义阜新旅游网站建设
  • 哪个网站是免费的网站文件名优化
  • 怎么查看网站备案琪觅公司网站开发
  • 怎么能自己做网站国外空间租用
  • 美橙互联建站门户网站价格
  • 苏州 网站建设佛山市住房和建设局网站首页
  • 视频直播网站开发与制作wordpress表格图表插件
  • 手机网站php源码免费试用网站源码
  • 中企动力网站建设合同wordpress logo在哪里改
  • 网站联盟名词解释杭州百度推广优化排名
  • 江门网站免费制作微信公众号商城开发费用
  • 网站好做吗高端网页游戏
  • seo工作湖南厦门网站优化
  • 自助网站建设用什么好wordpress 动态加载
  • 多新闻怎么做扁平网站wordpress 图片加水印插件
  • 培训网站方案wordpress 显示商品
  • 网站统计 中文域名网页代理app
  • p2p倒闭 网站开发网站模版调用标签教程
  • 自己做开奖网站wordpress高级文章编辑器
  • 建个人网站一般多少钱淮安市住房和城乡建设局网站
  • 网站设计思路下载asp做网站
  • 做酒店网站的公司有域名自己做网站吗
  • 贵州省建设厅官网站wordpress 链接提交