迭代器是一种抽象的设计概念,现实程序语言中并没有直接对应于这个概念的实物。
1 迭代器设计思维——STL关键所在
不论是泛型思维或STL的实际运用,迭代器都扮演这重要的角色。STL的中心思想在于:将数据容器和算法分开,彼此独立设计,最后再以一贴胶着剂将它们撮合在一起。容器和算法的泛型化,从技术的角度来看是并不困难,C++的class template和function templates可分别达成目标。
以下是容器、算法、迭代器的合作展示,以算法find()为例,它接受两个迭代器和一个”搜索目标“:
templateInputIterator find(InputIterator first,InputIterator last,const T& value){ while(first=!last&&*first!=value) ++first; return first;}
只要给出不同的迭代器,find()便能够对不同的容器进行直接操作:
#include#include #include
#include #include using namespace std;int main(){ const int arraySize=7; int ia[arraySize]={ 0,1,2,3,4,5,6}; vector ivect(ia,ia+arraySize); list ilist(ia,ia+arraySize); deque ideque(ia,ia+arraySize); //注意算法和成员方法的区别 vector ::iterator it1=find(ivect.begin(),ivect.end(),4); if(it1!=ivect.end()) cout<<"4 found. "<<*it1<