STL提供了大量的模板类和函数,下面为三个基本的STL组件:
- 迭代器
迭代器提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或vector中的一定范围的对象。迭代器就如同一个指针。事实上,C++的指针也是一种迭代器。但是,迭代器也可以是那些定义了operator*()以及其他类似于指针的操作符地方法的类对象。
- 容器
容器是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器。
- 算法
算法是用来操作容器中的数据的模板函数。例如,STL用sort()来对一个vector中的数据进行排序,用find()来搜索一个list中的对象。函数本身与他们操作的数据的结构和类型无关,因此他们可以在从简单数组到高度复杂容器的任何数据结构上使用。
STL中的头文件和容器类:
头文件 | 容器类 |
---|---|
<deque> | deque |
<list> | list |
<map> | map, multimap |
<queue> | queue, priority_queue |
<set> | set, multiset |
<stack> | stack |
<vector> | vector, vector<bool> |
STL中的算法及迭代器头文件:<algorithm>
和<iterator>
为了使用STL,最好加上:using namespace std;
对于STL数据结构和算法,你可以使用五种迭代器。
- Input iterators 提供对数据的只读访问。如:find()
- Output iterators 提供对数据的只写访问。如:copy()
- Forward iterators 提供读写操作,并能向前推进迭代器。如:replace()
- Bidirectional iterators 提供读写操作,并能向前和向后操作。如:reverse()
- Random access iterators 提供读写操作,并能在数据中随机移动。STL的排序和搜索函数使用随机访问迭代器。随机访问迭代器可以使用关系操作符作比较。如:random_shuffle()