map和unorder_map的比较


1. 内部实现原理的区别


1) map

map内部实现了一个红黑树(非严格的平衡二叉树),具有自动排序功能。

红黑树每个节点都代表map的一个元素,对 map 的操作(查找、添加、删除)相当于是对红黑树的操作;
优点是:可以保证最坏情况的运行也在预期之内。



2) unorder_map

内部实现了一个哈希表 (也叫散列表),排列无序,通过把关键码值映射都hash表中一个位置来访问记录。

Hash最大的优点:是把数据的存储和查找消耗的时间大大降低,查找时间复杂度可达到O(1);
代价仅仅是:消耗比较多的内存。


2. 优缺点比较


map

优点 :有序,运行效率高,可以做到在O(logn)时间内完成查找、插入和删除。
缺点 :空间占用率高,因为内部实现了红黑树,每一个节点都需要额外保存父节点、子节点和红黑性质。



unorder_map

优点 :查找速度快。
缺点 :哈希表的建立耗费时间长。


3. 使用场景


map

适用在有序性或者对单词查询有时间要求的应用场景。



unorder_map

除了上述map的使用场景,其余情况应使用unorder_map。


  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值