所以我知道map1.insert(map2.begin(), map2.end());
将map2
的所有元素插入map1
。
但是map2
中可能已经存在某些map1
元素。这些元素将不会更新。
e.g. map1 has { 3 : 4, 6 : 7 }
map2 has { 11: 5, 6 : 0 }
Now if I do map1.insert(map2.begin(), map2.end()), I will get
map1 = { 3: 4, 6 : 7, 11 : 5 }
But what I want is
map1 = { 3: 4, 6 : 0, 11 : 5 }
我想知道是否有像
map1.insert(map2.begin(), map2.end());
这样的函数可以强制更新已经存在的键?更新:
我知道可以使用以下方法来完成:
map1[k] = v
用于map2中的所有键,值对。但是是否有像
map1.insert(map2.begin(), map2.end())
这样的函数可以做到这一点? 最佳答案
在C ++ 17中,合并然后交换。
map2.merge(map1);
map2.swap(map1);
与基于插入的变体相比,此方法的好处在于,它只是拼接节点。没有分配,没有分配,没有建设。