我有以下幾點:C++:Swaping地圖一個地圖
typedef std::map<int, std::map<std::string, std::string> > ComplexMap;
ComplexMap map_a;
ComplexMap map_b;
我希望交換的整個map_a到map_b。有以下兩個選項之間的功能性差異:
// 1
ComplexMap::iterator end = map_a.end;
for (ComplexMap::iterator it = map_a.begin(); it != end; ++it)
{
mam_b[it->first].swap(it->second);
}
// 2
map_b.swap(map_a);
第一個不編譯(錯字!) –
我不認爲第一個是有意義的。你對這些地圖有任何限制嗎? –
假設'map_b'爲空,'map_a'爲非空。然後第一個代碼片段不會生成正確的結果。代碼'map_a'仍然是非空的。 – timrau