类属编程(generic programming) generic是构成库的另一种方式, 这与传统的oop是不同的.这类程序库一般由类属组件和类属算法组成,组件和算法通过迭代器组装起来,组件则对迭代器提供一定的封装.这种程序库的优点在于能够提供比传统程序库更灵活的组装方式,而不损失效率. STL,boost,ACE,ATL等库都是建构在generic的概念之上.STL对迭代器进行了分类,分类是从支持的功能上的,不同的类属算法对迭代器有不同的要求.下面对迭代器的种类做一下归纳。 1. Input Iterator(输入迭代器) : 单向读取和遍历. 2. Output Iterator(输出迭代器):单向写入和遍历. 3. Forward Iterator(前向迭代器):单向,读,写,支持多路遍历 4. Bidirectional Iterator(双向迭代器): 双向,读,写,支持多路遍历 5. RandomAccessIterator(随机访问迭代器):随机访问,读,写,支持多路遍历 强化(Refinement) 五种迭代器有一种归属关系.1<-2<-3<-4<-5 list容器提供了BidirectionalIterator,因此可以用于find算法(该算法需要InputIterator) 但sort算法(需要RandomAccessIterator),因此下面的代码不能通过编译. list