自动获得map里key类型 如何给map的key值排序?
如何给map的key值排序?
在C中,map是一种常见且易于使用的数据结构。映射是按键自动排序的,但有时我们需要按每个元素的值对映射进行排序。因为STL的sort函数不支持按值对地图排序,所以我们只能考虑另一种方法。
这是一种非常方便的使用Multimap的方法。Multimap与map类似,每个元素分为两部分:键和值。类似地,Multimap将根据键自动排序。区别在于map中的key不允许重复,而Multimap允许key重复。通过将映射中的键和值传递到Multimap,可以按值对映射进行排序。
代码如下所示:
Map<char,int> CNT,Multimap<int,char>ucnt for(Map<char,int>::iterator itr=cnt.开始()它!= 控制端()itr){ucnt.插入(pair< int,char>(ITR-> second,ITR-> first))}
LinkedHashMap中有一个模拟的“双向循环列表”,用于保存条目的插入顺序。我也可以用这个方法保存插入时键和值的顺序。它暂定名为orderedhashmap。主代码是从LinkedHashMap复制的。它还维护两个模拟的“双向循环链表”:keyheader和valueheader,保持键或值从小到大的顺序。当一个元素被放入时,除了将它存储在hash bucket中之外,还应该根据键的大小将它插入key header中,并根据值的顺序将它插入value header中。如果您想输出,您可以从这两个“头指针”向前或向后迭代,以获得键或值的有序条目。(可以实现正负顺序的键和值的输出,只比较数值型,如果不是数值型,可以按HashMap正常处理)。下面是测试结果:值按相反顺序输出java代码orderhashmap
自动获得map里key类型 循环获取map的key map通过value找key
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。