STL中各容器的数据结构

1. vector(向量)
STL中标准而安全的数组,只可以在vector的“前面”增加数据。

2. deque(双端队列double-ended queue)
在功能上与vector相类似,但是可以从前后端向其中添加数据

3. list(列表)
list数据结构是双向链表
游标以此只可以移动一步。如果对链表链表已经很熟悉,那么STL中的list其实就是一个双向链表(每个节点有指向前驱和指向后继的两个指针)。

4. set(集合)
set数据结构是二叉树(红黑树)
包含了进过排序了的数据,这些数据的值(value)必须是唯一的。

5. map(映射)
map数据结构是二叉树(红黑树)
经过排序了的二元组的集合,map中的每个元素都是由两个值组成,其中的key(键值,一个map中的键值必须是唯一的)是在排序或者搜索时使用的,它的值可以在容器中获取;而另一个值是该元素关联的数值。比如,除了可以ar[43] = "overripe"这样找到一个数据,map还可以通过ar[“banana”] = "overripe"这样的方法找到一个数据。如果你想获得其中的元素信息,通过输入元素的全名就可以轻松实现。

6. multiset(多重集)
multiset数据结构是二叉树(红黑树)
和集合(set)相似,然而其中的值不要求必须是唯一的(即可以有重复)。

7. multimap(多重映射):
multimap数据结构是二叉树(红黑树)
和映射(map)相似,然而其中的键值不要求必须是唯一的(即可以有重复)。

什么是红黑树

红黑树,是一种自平衡二叉查找树,也叫RB树(Red-Black Tree)。RB树的统计性能要好于一般的平衡二叉树,所以被STL选择作为了关联容器的内部结构。
在这里插入图片描述
红黑树的特性:

  1. 每个节点或是黑色或是红色
  2. 根结点是黑色的
  3. 每个叶子节点为黑色(注:这里叶子节点是指为空(Nil或NULL的叶子节点))
  4. 如果一个节点是红色的,那么他的子节点必须是黑色的。
  5. 从一个节点到该节点的子孙节点的所有路径上包含相同数目的黑节点。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

an y 5429

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值