我需要合并两个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,尽管您将不得不放弃映射类型提供的亚线性操作。

10-08 06:40