c++ map和unordered_map比較
兩種結構都以鍵值對的形式儲存元素,並且提供成員函式來協助高效地插入,查詢和刪除鍵值對。
但是他們在以下的幾個方面有區別:
內部實現
記憶體使用
時間複雜度
內部實現
std::map將元素儲存在一個平衡二叉樹中,所以元素是有序儲存的。
std::unordered_map使用雜湊表來儲存元素,元素並不是有序儲存。
記憶體使用
unordered_map比ordered_map更佔用記憶體,因為需要額外的記憶體來儲存雜湊表。
查詢時間複雜度
std::map的查詢時間複雜度是O(log n)。
std::unordered_map最佳的查詢時間複雜度是O(1),如果雜湊函式不是很好的話,最糟糕的複雜度會是O(n)。
什麼時候選擇map:
當你需要低記憶體佔用率
當你希望序列是有序的
當你需要穩定的表現
什麼時候選擇unordered_map
當你有一個很好的雜湊函式和對記憶體佔用率沒有限制時
相關文章
- 關於c++ STL map 和 unordered_map 的效率的對比測試C++
- c++ unordered_map/set自定義物件的hashC++物件
- 詳解map、multimap、unordered_map、unordered_multimap
- Go 與 C++ 的對比和比較GoC++
- [C++] 自定義C++比較器比較大小C++
- 用struct做unordered_map的keyStruct
- 陣列,map,unordered_map的簡單效能測試陣列
- Java,Pyhon,Scala比較(一)map,reduceJava
- 例說資料結構&STL(十一)——hash_map/unordered_map資料結構
- js 深比較和淺比較JS
- C++引用與指標的比較C++指標
- C與C++在函式和資料的比較C++函式
- Oracle date 型別比較和String比較Oracle型別
- 【C/C++】計時函式比較C++函式
- TCP和UDP比較TCPUDP
- Java和JavaSciprt比較Java
- Redis 和 Memcached 比較Redis
- MongoDB和Redis比較。MongoDBRedis
- MongoDB和MySQL比較MongoDBMySql
- ETL和EAI比較AI
- c++ map和mutimaps 插入值C++
- Go和Python比較的話,哪個比較好?GoPython
- C++與Rust操作裸指標的比較C++Rust指標
- C++與Rust變數宣告的比較C++Rust變數
- etcd和redis比較Redis
- 比較RAC和RxSwiftSwift
- Swift和Objective C比較SwiftObject
- XMLHttpRequest和fetch比較XMLHTTP
- [Oracle] minus 和 not exists比較Oracle
- ORACLE 中IN和EXISTS比較Oracle
- 比較字串和數字串字串
- ejb 和 javabean的比較JavaBean
- 索引的分析和比較索引
- map 對比
- 關於c、c++之前比較模糊的概念C++
- C++與Rust引用外部符號的比較C++Rust符號
- C++ 中三種正規表示式比較C++
- Java、C、C++中的陣列的比較JavaC++陣列