理解STL的钥匙——迭代器
- 迭代器是一种概念模型,满足一定的行为要求(如: 解引用,自增,自减,……)。根据不同的要求,STL定义了5种类型的迭代器
Input Iterator,Output Iterator,Forward Iterator,Bidirectional Iterator,Random-access Iterator - 迭代器是一种传统C指针的推广(广义指针),指针是一种特殊的迭代器
- 迭代器为算法提供了一种遍历数据结构元素的方法
- 迭代器将算法实现与具体数据结构解耦
- 迭代器与容器也是解耦的,尽管每一种容器都会定义它自己的迭代器
理解STL的核心——容器、算法、迭代器三个核心组件及其配合使用
其他杂项——函数对象、分配器、装饰器
函数对象
- 函数概念的推广
Just as iterators are a generalization of pointers, function objects are a generalization of functions: a function object is anything that you can call using the ordinary function call syntax - 函数对象不仅对类型进行抽象,还对操作进行抽象
Function objects are an important part of generic programming because they allow abstraction not only over the types of objects, but also over the operations that are being performed.