std::map 的swap错用


    map<int, shared_ptr<int>>map_test;
    shared_ptr<int> tmp_1 = make_shared<int>(1);
    map_test[1] = tmp_1;

    shared_ptr<int> tmp_20 = make_shared<int>(20);
    shared_ptr<int> tmp_vice1 = map_test[1];

    tmp_vice1.swap(tmp_20);

今天错误的使用了swap 如以上代码,本意是想改变map_test[1]所对应的值为20

可是这样使用后 是把tmp_vice1指向了原先tmp_20所管理的内存,tmp_20指向了 tmp_1管理的内存 而不是内存的相互交换!

正确使用直接用map_test[1] 和tmp_20 swap即可


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM