C++11 新特性之std::move

本文介绍了C++11中std::move的产生背景和使用,包括如何利用std::move进行容器的移动操作以及字符串的处理,强调了通过std::move将左值转换为右值引用以提高效率。
摘要由CSDN通过智能技术生成

std::move

面试的时候被问到了c++11新特性,感觉答的不好,所以回来重新总结下:

1 产生背景:

首先 std::move是一个标准库函数。
虽然不能将一个右值引用直接绑定到一个左值上,但是可以显式的将一个左值转换为对应的右值引用类型。我们可以调用move来获得绑定到左值上的右值引用,头文件为。

int && rr3=std::move(rr1);

move告诉编译器:我们有一个左值,但我们希望像一个右值一样处理它。但是这也意味着:除了对rr1赋值或者销毁它,我们将不再使用它(移动源对象的值)。

#include // move (ranges)
#include // move (objects)

对容器的move 以及对容器每个对象的move

#include <iostream>
#include <vector>
#include <stddef.h>
#include <string>
#include <memory>
using namespace std;

int main()
{
    vector<int> ves1{1,2,3};
    vector<int> ves2(3);
    vector<int> ves3(4);

    cout<<"ves1 contains " << ves1.size() << " ele
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值