map与unordered_map,set与unordered_set的比较

map与unordered_map

这里提一下,unordered_map在C++11的时候被引入标准库,而hash_map没有,所以建议使用unordered_map。

内部实现机理不同

map:
map的底层是一个红黑树(红黑树是非严格的平衡二叉搜索树),红黑树具有自动排序的功能,因此map内部的所有元素是有序的,map中的每一个元素都对应着红黑树中的一个节点,因此,map元素的查找、删除、插入等操作都对应于对红黑树进行操作,其时间复杂度都与树的高度有关,为O(logn),最坏情况和平均情况都是。
unordered_map:
unordered_map底层是用hash表来实现的,是通过把关键码值映射到hash表中的一个位置,查找的时间复杂度可达到O(1),其在海量数据处理中有着广泛的应用。另外,顾名思义,unordered_map是无序的。

优缺点比较

运行效率方面:
unordered_map比map高,但map提供了稳定的效率和有序的序列

占用内存方面:
map占用内存较低,unordered_map使用hash表实现的,内存占用略高

所以:
如果需要无序的容器快速查找、删除等,并且不担心稍高的内存时使用unordered_map;需要有序的容器内存在意时用map。

set与unordered_set

set与unordered_set区别和map与unordered_map区别类似。

这里就对unordered_set与unordered_map做一个比较:
unordered_set就是在hash表中插入value值,而这个value值就是它自己的key值;
这个容器是一个集合,所以在这个集合中插入相同的值是没有效果的。

而unordered_map在hash表中插入的是key-value键值对。

⚠️以上四种容器在使用时都需要引入对应的头文件
map:

#include <map>

unordered_map:

#include<unordered_map>

set:

#include<set>

unordered_set:

#include<unordered_set>
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值