STL中map與hash map的比較

2021-10-04 10:00:44 字數 403 閱讀 8616

stl中map與hash_map的比較

map :

c++的stl中map是使用樹來做查詢演算法; 時間複雜度:o(log2n)

hash_map :

使用hash表來排列配對,hash表是使用關鍵字來計算表位置; 時間複雜度:o(1), 最壞的時間複雜度:o(n)

總體來說:hash_map 比 map 查詢速度快,而且查詢速度基本和資料量大小無關,屬於常數級別,節省一定記憶體,如果沒有必要排序的話,盡量使用 hash_map 。

注:hash還有hash函式的耗時。當有100w條記錄的時候,map也只需要20次的比較,200w也只需要21次的比較!所以並不一定常數就比log(n) ;用map,還是hash_map,從3個方面來權衡: 查詢速度,資料量, 記憶體使用,還有乙個就是你的經驗!沒有特別的標準

STL中map與hash map容器的選擇

實際上這個問題不光c 會遇到,其他所有語言的標準容器的實現及選擇上都是要考慮的。做應用程式你可能覺得影響不大,但是寫演算法或者核心 就要小心了。今天改進 順便又來溫習基礎功課了。還記得herb sutter那極有味道的 c 對話系列 麼,在其中 產生真正的hash物件 這個故事裡就講了map的選擇。...

STL中map用法詳解

map是stl的乙個關聯容器,它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在 map中出現一次,第二個可能稱為該關鍵字的值 的資料處理能力,由於這個特性,它完成有可能在我們處理一對一資料的時候,在程式設計上提供快速通道。這裡說 下map內部資料的組織,map內部自建一顆紅黑樹 一種非嚴格意...

STL中map用法詳解

說明 如果你具備一定的c template知識,即使你沒有接觸過stl,這個文章你也應該可能較輕易的看懂。本人水平有限,不當之處,望大家輔正。一 map概述 map是stl的乙個關聯容器,它提供一對一 其中第乙個可以稱為關鍵字,每個關鍵字只能在map中出現一次,第二個可能稱為該關鍵字的值 的資料處理...