STL分为算法,数据结构,迭代器三部分。
STL是对数据结构及其相应增删差改排序等操作的封装,面向对象的语言都这样,会主动提供这个对象所拥有的操作。
STL的数据结构的实现,算法的实现。都可以用C语言查看。 书目:《stl源码剖析》。
STL就是工具集,每使用一种工具,需要包含相应的头文件:
向量(vector) 连续存储的元素<vector> PS:底层实现是一个较大的数组
列表(list) 由节点组成的双向链表,每个结点包含着一个元素<list>
双队列(deque) 连续存储的指向不同元素的指针所组成的数组<deque>
集合(set) 由节点组成的红黑树,每个节点都包含着一个元素,节点之间以某种作用于元素对的谓词排列,没有两个不同的元素能够拥有相同的次序 <set>
多重集合(multiset) 允许存在两个次序相等的元素的集合 <set>
PS:set和multiset的区别是:set插入的元素不能相同,但是multiset可以相同(例子:通讯录,一个人有多个手机号码)。
栈(stack) 后进先出的值的排列 <stack>
队列(queue) 先进先出的执的排列 <queue>
优先队列(priority_queue) 元素的次序是由作用于所存储的值对上的某种谓词决定的的一种队列 <queue>
映射(map) 由{键,值}对组成的集合,以某种作用于键对上的谓词排列 <map> make_pair
多重映射(multimap) 允许键对有相等的次序的映射 <map>
PS:map multmap 的区别在于 multmap的key可以重复,一个key可以对应多个值, 这样就涉及重载
堆(heap):建立大小堆,并排序 <heap>. sort_heap;
未完待续。