unordered_map
unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value。不同的是unordered_map不会根据key的大小进行排序,
存储时是根据key的hash值判断元素是否相同,即unordered_map内部元素是无序的,而map中的元素是按照二叉搜索树存储,进行中序遍历会得到有序遍历。
unordered_map可以以O(1)的时间复杂度访问到对应元素,但缺点是有较高的额外空间复杂度。map, set, multimap, and multiset查询复杂度都是O(logN)。
当我们需要查询而不关心排序的话,就用unordered_map,毕竟少了logN的复杂度。操作基本和map一样。
unordered_set
unordered_set与set相似,unordered_set基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,利用hash函数对key进行映射到不同区域进行保存。