STL是一种泛型编程,泛型编程旨在编写独立于数据类型的代码,而在C++中,完成通用程序的工具是模板。迭代器是理解STL的关键。模板使得算法独立于存储的数据类型,而迭代器使得算法独立于使用的迭代器类型。
迭代器类型:STL定义了5种迭代器,分别为输入迭代器、输出迭代器、正向迭代器、双向迭代器、随机访问迭代器
输入迭代器:不会修改容器中的值,对输入迭代器解除引用将使程序能够读取容器中的值,但不一定能让程序修改值
输出迭代器:输出迭代器与输入迭代器类似,只是解除引用让程序修改容器值,而不能读取。即能够写却不能读,发送到显示屏上的输出就是如此。cout可以修改发送到显示屏的字符流,却不能读取屏幕上的内容
正向迭代器:正向迭代器只能使用++字符串来遍历容器,与输入和输出的迭代器不同,它总是使用相同的顺序遍历一系列值
双向迭代器:双向迭代器具有正向迭代器的所有特性,同时支持递增和递减运算符
随机访问迭代器:能够直接跳到容器中的任何一个元素,具有双向迭代器的所有特性,同时添加了支持随机访问的操作
STL算法可以使用指针来对基于的非STL容易进行操作,C++支持将超尾概念应用与数组,使得可以将STL算法应用到常规数组。
STL具有容器概念(容器、序列容器、关联容器,概念是具有名称的通用类别)和容器类型(容器类型是可用于创建具体容器对象的模板)