将两个unordered_maps与重叠键合并

时间:2015-12-16 20:40:32

标签: c++ c++11

我想合并两个std::unordered_mapmapAmapB,同时如果两个地图包含相同的密钥,则保留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

感谢。

2 个答案:

答案 0 :(得分:19)

绝对:

auto result = mapA;
result.insert(mapB.begin(), mapB.end());

如果密钥已经存在于容器中,则insert的{​​{1}}成员函数不执行任何操作。

Demo.

答案 1 :(得分:0)

由于std::unordered_map未排序,因此没有其他办法。您必须遍历mapB中的每个元素并尝试将其插入mapA