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}
frommapB
谢谢。因为
std::unordered\u map
是未排序的,所以没有其他方法。您必须在mapB
中的每个元素上循环,并尝试将其插入mapA
。将不会插入mapA
中的现有元素。绝对:
auto result = mapA;
result.insert(mapB.begin(), mapB.end());
如果密钥已存在于容器中,则无序_map
的插入
成员函数将不执行任何操作
我的第一个想法是使用自定义比较器将
std::set_difference
的结果插入mapA
。