转载请注明出处:http://blog.csdn.net/u012609067点击打开链接
STL的各个容器经常使用,具体参见STL源码剖析,小结如下
vector:动态数组,尾部可动态加长,一般重分配两倍空间,支持随即访问,插入删除不如链表,当尾部预留的空间不够时重分配,重分配将进行三部曲,1.申请 2.复制 3.释放 以前的iterator全部失效。
list:环状双向链表,不支持随即访问,插入删除常量,对内存使用精准。
deque:连续线性内存段,map做中控器,支持随即访问,主要防止了vector的三部曲,实现队列,链表和数组的折中选择。
map:RB树
set:RB树
has_set:用哈希表做底层结构,支持接近常量的查询,而RB树却lgn,但是RB有序,所以有序重要时用set,查找重要时用hash_set,而STL的set用RB树主要是因为set强调的是集合的概念,集合的交 差 并操作需要大量比较,所以有序的RB树更合适。
257

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



