2014-10-10 55 views
2
using std::map; 
    map<string, int> mapStrToInt; 
    { 
      map<string, int> mapStrToInt2; 
      mapStrToInt2[ "h1" ] = 100; 
      mapStrToInt2[ "h2" ] = 200; 
      mapStrToInt2[ "h3" ] = 300; 
      mapStrToInt2[ "h4" ] = 400; 

      mapStrToInt.insert(mapStrToInt2.begin(), mapStrToInt2.end()); 
      mapStrToInt.swap(mapStrToInt2); // is this code safe? 
    } 
    // at this point mapStrToInt2 has been destroyed. 

问题>我已经测试此代码VS2013和mapStrToInt内容已被交换与的mapStrToInt2。但是,我仍然想确认交换临时对象的内容是否安全&合法。使用临时地图交换地图实例是否安全?

谢谢

+0

代码是完全合法的.. – Nim 2014-10-10 15:28:08

回答

4

它既安全又合法。当交换两个容器的内容时​​,内容的所有权从一个变为另一个。因此mapStrToInt的旧内容归临时所有,在退出范围时不再存在,临时的旧内容由mapStrToInt接管。

相关问题