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个数,那将会耗费很多时间.所以这里会有一些法则,如果太长就要把它
打散再重新处理.

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

被折叠的 条评论
为什么被折叠?



