在c++中有两种map分别是普通map和unordered_map
其中他俩的用法基本相同 但是其中还是有很多不同的地方
map和unordered_map的优缺点,适用于什么场景?
map
map的底层是基于红黑树实现的
** 优点: **有序性,这是map最大的优点,其元素的有序性在很多应用中都会简化很多操作
map的查找,删除,增加等一系列操作的时间复杂度稳定,都为 logn
缺点:
查找 删除 增加等操作的平均时间复杂度较慢,与n相关
unordered_map
unordered_map的底层基于哈希表实现的
优点: 查找,删除 添加的速度快,时间复杂度为常数级0(c)
缺点 由于unordered_map的底层是基于哈希表实现的 以(key,value)的储存形式,因此空间占用率高
unordered_map的查找,删除,添加的时间复杂度不稳定 平均为常数级O(c) 取决于哈希函数,极端情况下为O(n)