我需要在不改变顺序的情况下合并两个 unordered_map
。
例如,
unordered_map<int,int> map1 ,map2, map3;
map1 包含:<4,4> <2,2>
map2 包含:<3,3> <1,1>
map1 和 map2 将与 map3 合并。
所以我的 map3 应该包含 <4,4><2,2><3,3><1,1>
map<int,int>::iterator it = map3.begin();
std::merge(map1.begin(),map1.end(),map2.begin(),map2.end(),inserter(map3,it));
map3 顺序仍在变化。 我已经尝试使用 std::merge 和 insert,但没有按照上述要求工作。有人可以帮我解决这个问题吗?还是我在合并和插入时犯了一些错误?
最佳答案
std::unordered_map
不保证任何类型的顺序,而 std::map
始终按键排序(尽管您可以指定自己的比较功能)。看起来您想要按插入顺序排列的项目。在这种情况下,您可以将数据推送到 std::vector
,尽管您将不得不放弃映射类型提供的次线性操作。
关于c++ - 如何在不改变元素顺序的情况下合并两个unordered_map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35307907/