STL主要由几个核心部件组成,即迭代器、容器、算法、函数对象、适配器。容器即物之所属;算法是解决问题的方式;迭代器是对容器的访问逻辑的抽象,是连接算法和容器的纽带;迭代器通过添加了一种间接层的方式实现了容器和算法之间的独立;函数对象,就是重载了operator()操作符的对象;适配器是通过组合特定的容器实现的一种新的数据结构。
3. 函数模板
C++中的模板是STL实现的技术基础。C++中的模板可分为函数模板和类模板。函数模板抽象了针对不同类型的同一性质的操作。如针对int/long/string的max操作。请看下面的例子:
定义求取两个类型的值或对象的最大值的操作
template<typename T>
T max(T a,T b){return a>b ? a : b;}
求取两个int值的最大值
max(0,10);//返回10
求取两个string对象的最大值
max(string(“Hello”),string(“world”));//返回string(“world”)
4. 类模板
C++中的模板是STL实现的技术基础。C++中的模板可分为函数模板和类模板。类模板抽象了针对不同类型的同一类事务。如针对int/long/string的Stack。请看下面的例子:
定义一个通用堆栈Stack
template<typename T>
class Stack{
public:
inline void push(const T& value){…}
T pop(){…}
void clear(){…}
bool empty() const {…}
};
声明一个int类型的Stack
typdef Stack<int> IntStack;
声明一个string类型的Stack
typdef Stack<string> IntStack;
容器
容器即物之所在。容器是STL的核心部件之一,是迭代器的依附,是算法作用的目标。
STL中的容器可分为顺序容器(Sequence Container)和关联容器(Associative Container)。容器适配器(Container Adaptor)是对顺序容器(Sequence Container)或关联容器(Associative Container)进行包装而得到的一种具有更多约束力(或功能更强大)的容器