对STL做下小结

来源:互联网 发布:js从小到大排序 编辑:程序博客网 时间:2024/05/24 02:28

转载请注明出处: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树更合适。

0 0
原创粉丝点击