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.
问题&GT;我已使用VS2013测试了此代码,mapStrToInt
的内容已与mapStrToInt2
的内容交换。但是,我仍然想确认交换临时对象的内容是安全的。合法的。
谢谢
答案 0 :(得分:4)
既安全又合法。交换两个容器的内容时,内容的所有权从一个变为另一个。因此mapStrToInt
的旧内容归临时所有,并在退出范围时不再存在,而临时的旧内容由mapStrToInt
接管。