您的位置:首页 > 理论基础 > 数据结构算法

stl源码剖析学习笔记(一)重点数据结构概览

2016-03-14 14:31 323 查看
stl源码剖析学习笔记(一)

本系列都是基于SGI STL.

1、vector

线性连续空间 capacity() size() empty()。 对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了

capacity()的实现是return size_type(end_of_storage - begin());

size()的实现是return size_type(end()-begin());

empty()的实现是return begin()==end();

end() return finish;

begin() return start;

begin() end()符合stl的前闭后开规范



2、list

双向循环链表



3、deque

双向开口‘连续’空间 其连续性是通过很多个map指针映射小块连续内存区域保证的,假连续。决定了其修改操作效率极低。连基本的排序,最好都先拷贝到vector中排序号再拷回来。应用场合?



4、stack、queue

stack先进后出,queue先进先出,结构连续简单。其底层结构是sequence

5、heap(不是stl的容器组件,是幕后英雄)

找list中的极值,需要线性扫描list。stl用的是完全二叉树,而且是大顶堆。

此处可以引入堆的push、pop和sort算法介绍。

heap相关的push、pop和sort操作全部都在algorithm头文件内。



前五个均称为序列式容器,可序的,对序列性有一定需求。

关联式容器是Key-Value方式访问,对序列性无需求。

1、平衡二叉树/***L树

2、红黑树

3、set/map/multiset/multimap

4、hashtable/hashset/hashmap/hashmultiset/hashmultimap
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: