迭代器模式

2021-09-25 09:37:42 字數 1819 閱讀 9400

定義

迭代器模式(行為設計模式):

提供一種方法順序訪問乙個容器物件中的各個元素,而又不需要暴露該物件的內部資料儲存的實現。

案例:

#include #includeusing namespace std;

templateclass concreteiterator;

templateclass iterator

; virtual void first() = 0;

virtual void next() = 0;

virtual item *curitem() = 0;

virtual bool isdone() = 0;

};templateclass aggregate

; virtual void pushdata(item item) = 0;

virtual iterator* createiterator() = 0;

virtual item& operator(int index) = 0;

virtual int getsize() = 0;

};template class concreteaggregate : public aggregate;

template void concreteaggregate::pushdata(item item)

template iterator* concreteaggregate::createiterator()

template item& concreteaggregate::operator(int index)

template int concreteaggregate::getsize()

templateclass concreteiterator : public iterator ;

virtual void first()override;

virtual void next()override;

virtual item *curitem()override;

virtual bool isdone()override;

private:

aggregate*aggr;

int cur;

};templatevoid concreteiterator::first()

templatevoid concreteiterator::next()

templateitem *concreteiterator::curitem()

return nullptr;

}templatebool concreteiterator::isdone()

int main()

delete it;

delete aggr;

system("pause");

return 0;

}

結果:

優點

缺點

應用場景

總結

c++ 中的 有序容器和 無須容器、甚至是 普通陣列都是有內建迭代器的, 通常來說。需要我們自己去實踐迭代器模式的場景還是比較少見的,我們只需要使用語言中已有的容器和迭代器就可以了。

迭代器模式

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而不是暴露該物件的內部表示。乙個聚集物件,而且不管這些物件是什麼都需要遍歷的時候,你就應該考慮用迭代器模式。你需要對聚集有多種方式遍歷時,可以考慮用迭代器模式。為遍歷不同的聚集結構提供如開始,下乙個,是否結束,當前哪一項等統一...

迭代器模式

我最早接觸的設計模式就是迭代器模式了哈 為什麼要有迭代器模式呢?看下下面的 就知道了哈 對於乙個陣列物件sz 我們要怎麼遍歷呢?public void bianlisz class geweishu public myiterator getiterator private class geweis...

迭代器模式

迭代器模式 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件多的內部表示。1 iterator抽象類 public abstract class iterator 2 aggregate聚集抽象類 public abstract class aggregate 3 concreteite...