【C++标准库-体系结构与内核分析】各种容器

本文详细介绍了C++ STL中的不同容器类型,包括顺序容器、关联容器和散列容器,并着重讨论了C++11新增的红黑树在Set/Map中的应用以及哈希碰撞的处理策略。理解这些有助于提升对STL容器性能的认识。

1.容器分类

顺序容器(Sequence Containers):Array,Vector,Deque,List,Forward-List
关联容器(Associative Containers):Set/Multiset,Map/Multimap
散列容器(Unordered Containers):Unordered Set/Multiset,Unordered Map/Multimap
其实散列容器也是一种关联容器.

说明:
(1)关联容器对于查找来说具有重大意义.
(2)图中红框是C++11新添加的容器.
STL并没有规定我们对于SET,MAP等容器的底层到底要用什么来实现,但是由于红黑树卓越的性能,各家编译
器的标准库在选择什么是Set/Map等容器的底层数据结构时,都不约而同地选择了红黑树.

(3)对于哈希碰撞,目前公认最好的做法就是拉链法,目前主流C++编译器中的标准库在选择的时候都用了这
种方法来处理哈希冲撞.不过如果碰撞次数太多,一个篮子里面的链表太长,查找也会变得很慢,想象一下如
果一个链表有100w,正好要找第100w个数,那将会耗费很多时间.所以这里会有一些法则,如果太长就要把它
打散再重新处理.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值