栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++STL库 map与unordered

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++STL库 map与unordered

C++STL库map与unordered_map性能比较 map 实现原理

红黑树
红黑树是一种特化的AVL树(平衡二叉树),都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能 。

优点

(1)由于红黑树会对插入元素进行排序,所以保证map为有序结构。
(2)由于采用红黑树实现查找,插入和删除,因此时间复杂度为O(logn),相对较快。

缺点

(1)空间占用率比较高,因为内部实现了红黑树,虽然提高了运行效率,但是每个节点都要保存父亲节点和孩子节点和红黑树的性质,使得每一个节点都占用大量的空间。

unordered_map

哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

优点

(1)由于采用哈希表实现查找,插入和删除,因此时间复杂度为O(1), 查找效率极高(这句话并不严谨,极端情况下,如果所有 Key 的数组下标都冲突,那么 Hash 表就退化为一条链表,查询的时间复杂度是 O(N))。

缺点

(1)哈希表的建立需要一定时间。

性能比较


图中第一行为C++STL库map所需时间花销,第二行为C++STL库unordered_map所需时间花销。由此可见,unordered_map比map快了近三倍。
第三行为google实现的unordered_map所需时间花销。
第四行为github平台一位牛人实现的unordered_map所需时间花销。

主要借鉴该博客 图片来此B站该视频

原创不易 转载请标明出处
如果对你有所帮助 别忘啦点赞支持哈

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/878915.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号