我需要合并两个unordered_map
而不更改顺序。
例如,
unordered_map<int,int> map1 ,map2, map3;
map1包含:&lt; 4,4&gt; &LT; 2,2&GT;
map2包含:&lt; 3,3&gt; &LT; 1,1 GT;
map1和map2将与map3合并。
所以我的map3应该包含&lt; 4,4&gt;&lt; 2,2&gt;&lt; 3,3&gt;&lt; 1,1&gt;
map<int,int>::iterator it = map3.begin();
std::merge(map1.begin(),map1.end(),map2.begin(),map2.end(),inserter(map3,it));
仍然是map3订单正在改变。 我试过std :: merge和insert,但没有按照上面的要求工作。有人可以帮我这个。或者我在合并和插入时犯了一些错误?
答案 0 :(得分:5)
<ListView ItemsSource="{Binding NameOfObservableCollectionProperty}"....>
<ListView.View>
<GridView>
<GridViewColumn Header="Name"
DisplayMemberBinding="{Binding Name}" />
</GridView>
</ListView.View>
</ListView>
并不保证任何类型的订单,而std::unordered_map
始终按键排序(尽管您可以指定自己的比较函数)。看起来您想要按照插入顺序排列项目。在这种情况下,您可以将数据推送到std::map
,但您必须放弃映射类型提供的子线性操作。
答案 1 :(得分:0)
地图元素的顺序依赖于其键和平衡树算法,但不依赖于源地图元素顺序。如果您想保存订单,请使用std::vector<std::pair<inr,int>>
。
答案 2 :(得分:0)
std :: merge工作假定两个已经排序的范围(在您的情况下是两个未排序的映射)实现线性时间性能。由于其实现,使用未排序的映射将不会提供所需的结果。