设计模式的理解:迭代器模式(Iterator)
迭代器模式,又称游标模式,提供一种方法顺序访问一个集合对象中的各个元素,而又不需要暴露该对象的内部表示。

template
class Iterator{public :vitrual void first() = 0;vitrual void next() = 0;vitrual bool isDone() = 0;vitrual T& currentItem() = 0;
}template
class Aggregate{public :Iterator getIterator()=0;
}template
class MyIterator: public Iterator{
private :MyCollection mc;public :MyIterator(const MyCollection &c):mc(c){}vitrual void first(){...}vitrual void next() {...}vitrual bool isDone() {...}vitrual T& currentItem() {...}
}template
class MyCollection: public Aggregate{public :Iterator getIterator(){ return MyIterator(*this);}.....
}void main(){MyCollection myCollection;....Iterator iterator = myCollection.getIterator();for(iterator.first();iterator.isDone();iterator.next()){cout<<"currentItem:"<
可以通过内部类可是可行的,即把MyIterator类变成MyCollection的内部类实现。为了提高性能,还可以考虑从运行时多态改成编译时多态。在STL库中,已经有成熟的迭代器了,比上述代码的性能更优越,功能更丰富,例如Begin()+n 等操作,反向迭代器等。 但是迭代器的思想没变,也怎么不复杂。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
