cpp std::vector 与 std::move

代码

#include<iostream>
#include<vector>
#include<utility>


using namespace std;
int main()
{
        vector<int> a ;
        a.push_back(1);
        a.push_back(2);
        a.push_back(3);
        for(auto i : a) cout << "a i is " << i <<endl;

        vector<int> b = std::move(a);

        for(auto i : b) cout << "b i is " << i <<endl;
        for(auto i : a) cout << "a i is " << i <<endl;
        return 0;
}
                                                                                                                                                                                                                   

编译命令

g++ test.cpp -std=c++11 -o test.out

执行结果

./test.out

在这里插入图片描述

  • 可以看到第二次打印a 中的内容时,已经为空了。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
vectorstd::move是C++11中引入的一种特性,用于实现移动语义。通过使用std::move,可以将一个对象的所有权转移给另一个对象,而不发生任何复制操作。 在引用的代码中,可以看到通过std::move(v0)将v0的所有元素移动到了v1中。因此,在输出v0和v1的值时,v0中的元素已经被移动到了v1,v0变为空。接着,通过std::move(v1)将v1的所有元素移动到了v0中,再次输出v0和v1的值时,v1变为空,而v0又重新包含了移动过来的元素。 在引用的代码中,同样使用了std::move来实现移动语义。将a的所有元素移动到了b中,并将a变为空。因此,在输出a和b的值时,a中的元素已经被移动到了b,a变为空。 总之,std::move可以用于将一个对象的所有权转移给另一个对象,实现高效的移动语义操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [std::vector容器 move语义测试代码](https://blog.csdn.net/joshua0137/article/details/123765439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [thread_pool:C++11线程池](https://download.csdn.net/download/weixin_42116734/19636445)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [cpp std::vectorstd::move](https://blog.csdn.net/weixin_37210821/article/details/118002036)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值