1. 程式人生 > 實用技巧 >C++ HashMap和Map的區別

C++ HashMap和Map的區別

今天想查一下c++ hashmap的使用方法,搜出來的一些文章實在辣眼睛,竟然很多都混淆了c++中map和hashmap的區別。

首先,c++ 標準庫的std::map內部是排序的,內部使用的是紅黑樹實現,不管是增加還是查詢的時間複雜度 O(logN)

O(logN)。

而c++ 標準庫的hashmap其實叫作std::unordered_map,其增加和查詢的時間複雜度才是 O(1)

O(1)。它提供了類似map的方法。在c++11下直接使用標頭檔案#include <unordered_map> 就可以了,如果不在c++11標準下,也可以使用#include <tr1/unordered_map> 來支援hashmap.

當然有人可能會說其實c++有個叫作hash_map的庫,但那不是標準庫,引用一個stackoverflow的評論來告訴你如何取捨:

@ShameelMohamed, 2017, i.e. 6 years after C++11 it should be hard to find an STL that doesn’t provide unordered_map. Thus, there is no reason to consider the non-standard hash_map. – maxschlepzig Feb 13 '17 at 10:42

參考連結:
https://blog.csdn.net/mgsweet/article/details/105649792