STL笔记:iterator
在此总结下STL中iterator的实现:
首先,STL中存在三类神器:容器,算法,迭代器。他们三者的关系是:算法通过迭代器操纵容器。这样有一个好处是算法的设计无需考虑具体的容器,只操纵迭代器就可以了。当我们需要自己设计一个算法,兼容STL中的容器,那么只需要在满足迭代器的种种规范下设计算法即可。反过来,当我们需要自己设计一个容器,并且这个容器兼容STL中的算法,这个容器只需要提供相应的满足种种规范的迭代器即可。
所以迭代器的作用不言而喻:它是连接容器和算法的粘合剂。
而话又说回来,既然容器中提供了迭代器,那么还需要单独设计出一个<iterator>干嘛?规范。无论是STL中已存在的容器和算法,或者是设计兼容STL的容器和算法,都需要满足这样一种规范,使二者能够完美的配合起来。
一个迭代器,需要遵循如下的规范:指向的对象的类型value_type,两个迭代器之间的距离difference_type,指向对象的引用reference,指向对象的指针pointer,以及这个迭代器所采取的策略category_type。代码如下:
1 template<class category,class T,class distance=ptrdiff_t,class Pointer=T*,class Reference=T&> 2 struct iterator{ 3 typedef category category_type; 4 typedef T value_type; 5 typedef distance difference_type; 6 typedef Pointer pointer; 7 typedef Reference 8 };
对于迭代器采取的策略category_type,是这样理解的:
posted @ 2013-11-12 19:51 羌塘之风 阅读(203) 评论(0) 推荐(0)