自動獲得map里key類型 如何給map的key值排序?
如何給map的key值排序?在C中,map是一種常見且易于使用的數(shù)據(jù)結構。映射是按鍵自動排序的,但有時我們需要按每個元素的值對映射進行排序。因為STL的sort函數(shù)不支持按值對地圖排序,所以我們只能考
如何給map的key值排序?
在C中,map是一種常見且易于使用的數(shù)據(jù)結構。映射是按鍵自動排序的,但有時我們需要按每個元素的值對映射進行排序。因為STL的sort函數(shù)不支持按值對地圖排序,所以我們只能考慮另一種方法。
這是一種非常方便的使用Multimap的方法。Multimap與map類似,每個元素分為兩部分:鍵和值。類似地,Multimap將根據(jù)鍵自動排序。區(qū)別在于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中有一個模擬的“雙向循環(huán)列表”,用于保存條目的插入順序。我也可以用這個方法保存插入時鍵和值的順序。它暫定名為orderedhashmap。主代碼是從LinkedHashMap復制的。它還維護兩個模擬的“雙向循環(huán)鏈表”:keyheader和valueheader,保持鍵或值從小到大的順序。當一個元素被放入時,除了將它存儲在hash bucket中之外,還應該根據(jù)鍵的大小將它插入key header中,并根據(jù)值的順序將它插入value header中。如果您想輸出,您可以從這兩個“頭指針”向前或向后迭代,以獲得鍵或值的有序條目。(可以實現(xiàn)正負順序的鍵和值的輸出,只比較數(shù)值型,如果不是數(shù)值型,可以按HashMap正常處理)。下面是測試結果:值按相反順序輸出java代碼orderhashmap