std::swap和std::move

  1. 在C++11中,如果赋值运算符的右边是一个右值,那么当对象支持移动操作时我们能够自动地避免复制。如果对象有名字,那么它就是一个左值。
    void swap(double & x,double & y)
    {
    double tmp=x;
    x=y;
    y=tmp;
    }
    void swap(vector& x,vector& y)
    {
    vector tmp=x;
    x=y;
    y=tmp;
    }
    通过3次复制的交换

void swap(vector& x,vector& y)
{
vector tmp=static_cast<vector&&>(x);
x=static_cast<vector&&>(y);
y=static_cast<vector&&>(tmp);
}
void swap(vector& x,vector& y)
{
vector tmp=std::move(x);
x=std::move(y);
y=std::move(tmp);
}
通过3次移动进行交换,第一种交换通过强制类型转换实现,第二种交换使用的是std::move

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值