STL概述
STL是Standard Template Library的缩写,是C++标准库中最强大、最复杂、最有用的部分。STL主要由容器(container)、跌代子(iterator)、算法(algorithm)所组成。还有仿函数(functor)、适配器(adapter)、配置器(allocator)等辅助组件。
1. 容器container
容器是存放和管理数据元素的数据结构,分为两大类:顺序容器(sequence container)和关联容器(associative container)。
- 顺序容器有:vector(向量,酷似数组), deque(双端队列), list(双链表)
- 关联容器有:map(字典), set(集合), multi_map(允许重复键的字典), multi_set(允许重复键的集合)
除此以外还有:
- 特殊的容器:string(字符串), array(C语言原始数组)
- 容器适配器:stack(栈), queue(队列), priority_queue(优先队列)
- 内部容器:不提供给用户使用,只用来实现其他容器,比如红黑树(用来实现map,set),堆(用来实现priority_queue)
2. 跌代子iterator
跌代子是用来访问容器内元素的对象,类似指针。 跌代子根据能力的不同,分为:
- 随机跌代子(vector、deque的迭代子)
- 双向跌代子(list的迭代子)
- 单向跌代子
- 输入跌代子
- 输出跌代子
另外还有
- 跌代子适配器(back_inserter, front_inserter, inserter, 反向迭代子,ostream_iterator, istream_iterator)