C++:STL:vector: move赋值构造;右值引用;

270 篇文章 ¥9.90 ¥99.00

其实右值引用,move,右值构造的实质,从编译器的角度看,就是就是在栈上专门为这个将要作用于move概念做一个分配空间的过程,在使用时将其生命周期延长,ownership移交一下。不能使用堆上的变量做右值引用,因为如果使用了堆,就代表着有了地址,是左值。什么move啦,右值引用啦,只是在炒概念,迷惑了一大批人,将来还将继续迷惑人。希望大家看到输出自己的感想。
其实类似的还有shared pointer、unique pointer,steal类似的将使用权,移交出去或者计数。

而容器的右值赋值的作用在于,对于已经存在的数据,要充分利用,不要再根据已经存在的数据(内存),重新构造一份容器。要对比着非右值赋值的实现来看。

move的精髓还是在于两个方面:

  1. 一个是隐式临时变量的右值引用;
  2. 另一个在于主动对右值引用的创建;
    在这里插入图片描述

libstdc+±v3/include/bits/move.h

/**

  • @brief Convert a value to an rvalue.
  • @param __t A thing of arbitrary type.
  • @return The parameter cast to an rvalue-reference to allow moving it.
    */
    template
    constexpr typename
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mzhan017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值