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
的内容互换。但是,我仍然要确认交换临时对象的内容是安全和合法的。谢谢
最佳答案
这既安全又合法。交换两个容器的内容时,内容的所有权从一个变为另一个。因此,mapStrToInt
的旧内容归临时对象所有,并在退出范围时不再存在,而临时内容的旧内容由mapStrToInt
接管。