我想合并两个std::unordered_map
:mapA
和mapB
,同时如果两个地图包含相同的密钥,则保留mapA
项的优先级。
是否有一种优雅的方式(而不是验证每个键......我的地图包含大量元素)?
示例:
mapA = {{"sugar",0.1},{"salt",0.2}}
mapB = {{"sugar",0.3},{"pepper",0.4}}
我希望得到的结果是:
result = {{"sugar",0.1},{"salt",0.2},{"pepper",0.4}}
忽略{"sugar",0.3}
mapB
感谢。
答案 0 :(得分:19)
绝对:
auto result = mapA;
result.insert(mapB.begin(), mapB.end());
如果密钥已经存在于容器中,则insert
的{{1}}成员函数不执行任何操作。
答案 1 :(得分:0)
由于std::unordered_map
未排序,因此没有其他办法。您必须遍历mapB
中的每个元素并尝试将其插入mapA
。 1}}中的现有元素将不会被插入。