我需要合并两个unordered_map
而不更改顺序。
例如,
unordered_map<int,int> map1 ,map2, map3;
map1包含:
map2包含:
map1和map2与map3合并。
所以我的map3应该包含
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
,尽管您将不得不放弃映射类型提供的亚线性操作。