C++ 用重叠键合并两个无序的_映射

C++ 用重叠键合并两个无序的_映射,c++,c++11,C++,C++11,我想合并两个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}} 忽

我想合并两个
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}
from
mapB


谢谢。

因为
std::unordered\u map
是未排序的,所以没有其他方法。您必须在
mapB
中的每个元素上循环,并尝试将其插入
mapA
。将不会插入
mapA
中的现有元素。

绝对:

auto result = mapA;
result.insert(mapB.begin(), mapB.end());
如果密钥已存在于容器中,则
无序_map
插入
成员函数将不执行任何操作


我的第一个想法是使用自定义比较器将
std::set_difference
的结果插入
mapA