如何在不改变元素顺序的情况下合并两个unordered_maps?

kay*_*yle 1 c++ merge dictionary stl unordered-map

我需要在unordered_map不改变顺序的情况下合并两个s.例如,

unordered_map<int,int> map1 ,map2, map3;
Run Code Online (Sandbox Code Playgroud)

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));
Run Code Online (Sandbox Code Playgroud)

仍然map3订单正在改变.我试过std :: merge和insert,但没有按照上面的要求工作.有人可以帮我这个.或者我在合并和插入时犯了一些错误?

小智 5

std::unordered_map不保证任何类型的订单,而std::map始终按键排序(尽管您可以指定自己的比较功能).看起来您想要按照插入顺序排列项目.在这种情况下,您可以将数据推送到a std::vector,尽管您必须放弃映射类型提供的子线性操作.