map底层

本文详细解析了C++ STL中的map容器,它使用红黑树作为底层实现,提供高效的键值对存储。红黑树是一种自平衡二叉查找树,保持较高的插入、删除和查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

map是C++STL中的一种关联容器,也就是存key-value键值对的映射表容器,有map和multimap,它们之间的区别是map不允许key重复,multimap是允许key重复的;map的底层是一颗红黑树,一种非严格的平衡二叉树,左右子树的高度差不能超过较短子树高度的2倍,数据的增删查效率都比较高,平均时间复杂度在O(log2n)。在此给出红黑树的定义:

1)每个结点要么是红的,要么是黑的。

2)根结点是黑的。

3)每个叶结点,即空结点(NIL)是黑的。

4)如果一个结点是红的,那么它的俩个儿子都是黑的。

5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。

红黑树不像AVL(平衡二叉树)树那样维持了二叉树的高度平衡(左右子树的高度差不能超过1),因此在插入删除数据时,所做的旋转操作比起红黑树来说,那就少很多了,因此其效率也比AVL树高;红黑树插入一个新节点,旋转的次数最多2次,删除一个节点旋转的次数最多3次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值