unordered map和map的區別

2021-07-14 22:09:43 字數 451 閱讀 6832

boost::unordered_map, 它與 stl::map的區別就是,stl::map是按照operator《比較判斷元素是否相同,以及比較元素的大小,然後選擇合適的位置插入到樹中。所以,如果對map進行遍歷(中序遍歷)的話,輸出的結果是有序的。順序就是按照operator< 定義的大小排序。

而boost::unordered_map是計算元素的hash值,根據hash值判斷元素是否相同。所以,對unordered_map進行遍歷,結果是無序的。

用法的區別就是,stl::map 的key需要定義operator< 。 而boost::unordered_map需要定義hash_value函式並且過載operator==。對於內建型別,如string,這些都不用操心。對於自定義的型別做key,就需要自己過載operator== 或者hash_value()了。 

最後,當不需要結果排好序時,最好用unordered_map。

c map和unordered map怎麼選擇

有序與無序 大多數情況下,應優先考慮使用unordered map,除非使用場合要求key是有序的。map和unordered map在使用介面上非常像,但是兩者的實現方式不同,決定了兩者的表現形式和效能是不一樣的。map使用紅黑樹實現,特點是有序,查詢效率是o log n 關於map更詳細的使用和...

map和unordered map效能對比

最近遇到乙個查詢對應關係的需求,第一時間想到map,但是千萬級的資料,於是使用了unordered map。時間降低了3倍左右。但是偶然看見網上有有人說手擼乙個hashmap,最基本的鏈式的,都要比unordered map要快,於是試了一下。發現stl寫的還挺有意思的。寫說下和stl的對比。手擼h...

C 之map和unordered map詳解

簡介 c 中map和unordered map提供的是一種鍵值對容器,所有的資料都是成對出現的,每一對中的第乙個值稱之為關鍵字 key 每個關鍵字只能在map 現一次 第二個稱之為該關鍵字的對應值 value 一對一的對映。一.map 有序性,可應用於有順序要求的應用中 unordered map ...