STL中的 map、unordered_map、hash_map

(1)std::map

存储键-值对,并根据唯一的键排序;容器的复杂度为对数。

(2)std::unordered_map

:存储键-值对,并根据唯一的键排序;容器的复杂度为对数。这种容器是C++11 新增的。 C++ 11标准中加入了unordered系列的容器。unordered_map记录元素的hash值,根据hash值判断元素是否相同。map相当于java中的TreeMap,unordered_map相当于HashMap。无论从查找、插入上来说,unordered_map的效率都优于hash_map,更优于map;而空间复杂度方面,hash_map最低,unordered_map次之,map最大。

(3)hash_map

基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存。底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,利用hash函数对key进行映射到不同区域进行保存。不是c++官方容器

推荐使用unordered_map

运行效率方面:unordered_map最高,hash_map其次,而map效率最低
占用内存方面:hash_map内存占用最低,unordered_map其次,而map占用最高

你可能感兴趣的:(STL中的 map、unordered_map、hash_map)