C 設計模式 iterator 迭代器模式

2021-09-07 11:55:13 字數 1248 閱讀 3080

迭代器模式定義:提供一種方法順序訪問乙個聚合物件中各個元素,而又不須要暴露該物件。

迭代器分內部迭代器和外部迭代器。內部迭代器與物件耦合緊密,不推薦使用。

外部迭代器與聚合容器的內部物件松耦合,推薦使用。

迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既能夠做到不暴露集合的內部結構,又可讓外部**透明地訪問集 合內部的資料。

並且,能夠同一時候

定義多個迭代器來遍歷。互不衝突。

對於迭代器,參考stl迭代器,僅僅須要使用詳細容器的迭代器就能夠遍歷該容器內的聚合物件。也能夠借助迭代器實現物件的諸如加入、刪除和呼叫。

1.迭代器角色(iterator):迭代器角色負責定義訪問和遍歷元素的介面。

2.詳細迭代器角色(concrete iterator):詳細迭代器角色要實現迭代器介面,並要記錄遍歷中的當前位置。

3.集合角色(aggregate):集合角色負責提供建立詳細迭代器角色的介面。

4.詳細集合角色(concrete aggregate):詳細集合角色實現建立詳細迭代器角色的介面——這個詳細迭代器角色於該集合的結構相關。

c++迭代器模式(與stl介面保持一致)**:

#include #include using namespace std;

templateclass iterator

};templateclass concreteaggregate;

templateclass concreteiterator : public iterator

virtual void first()

virtual void next()

virtual item* currentitem()

virtual bool isdone()

};templateclass aggregate

};templateclass concreteaggregate:public aggregate

virtual iterator* createiterator()

item& operator(int index)

int getlen()

};int main()

delete it;

delete aggr;

return 0;

}

設計模式 迭代模式Iterator

提供乙個方法按順序遍歷乙個集合內的元素,而又不需要暴露該物件的內部表示。1 訪問乙個聚合的物件,而不需要暴露物件的內部表示 2 支援對聚合物件的多種遍歷 3 對遍歷不同的物件,提供統一的介面。iterator 定義訪問的介面 抽象的迭代,有判斷結束和下乙個,獲取當前元素等函式 author xing...

C 設計模式 iterator 迭代器模式

迭代器模式定義 提供一種方法順序訪問乙個聚合物件中各個元素,而又不需要暴露該物件。迭代器分內部迭代器和外部迭代器,內部迭代器與物件耦合緊密,不推薦使用。外部迭代器與聚合容器的內部物件松耦合,推薦使用。迭代器模式就是分離了集合物件的遍歷行為,抽象出乙個迭代器類來負責,這樣既可以做到不暴露集合的內部結構...

C 設計模式 Iterator迭代器模式詳解

迭代器模式的概述 在現在的電視機中,我們使用 後乙個 和 前乙個 按鈕可以很方便的換台,當按下 後乙個 按鈕時,將切換到下乙個預置的頻道。想象一下在陌生的城市中的旅店中看電視。當改變頻道時,重要的不是幾頻道,而是節目內容。如果對乙個頻道的節目不感興趣,那麼可以換下乙個頻道,而不需要知道它是幾頻道。迭...