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即可

原文地址:https://www.cnblogs.com/wangshaowei/p/11042452.html