迭代器模式
定義:提供一種方法順序訪問乙個集合物件中的元素,但是又不暴露該物件的內部顯示
這裡採用了類模板來定義類,強化對模板的運用。
**:
#include #include #include using namespace std;
//抽象迭代器類
templateclass iterator
;//抽象聚合類
templateclass aggregate
;//具體聚合類
templateclass concreteaggregate :aggregate
~concreteaggregate() }
int count()
void pu****em(const t& str)
t removeitem(const int index)
return res;
} iterator* createiterator()
private:
vectorm_listitem;
iterator*m_piter;
};//具體迭代器類
templateclass concreteiterator :public iterator
t firstitem()
t nextitem()
return t();
} t currentitem()
bool isend()
private:
aggregate*m_pconcretea;
int m_cnt;
};//客戶端
int main()
} cout << "********************" << endl;
concreteaggregate*p1 = new concreteaggregate;
p1->pu****em(999);
p1->pu****em(888);
p1->pu****em(666);
p1->pu****em(555);
iterator*piter = p1->createiterator();
if (piter) }
if (p)
if (p1)
return 0;
}
效果:
c 設計模式之迭代器模式
迭代器模式iterator pattern 定義 迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中的各種元素,而又不暴露該物件的內部表示。適用場景 1 訪問乙個聚合物件的內容而無需暴露它的內部表示,2 支援對聚合物件的多種遍歷,3 為遍歷不同的聚合結構提供乙個統一的介面。迭代器模式的...
設計模式之迭代器模式(C )
迭代器模式,提供一種方法順序訪問乙個聚合物件中各個元素,而不暴露該物件的內部表示。該模式很好理解,c 中的迭代器應該都用過,和那個差不多。其uml圖如下 concreteiterator內部有乙個聚合物件的引用 指標 而concreteaggregate依賴於concreteiterator。以前向...
c 迭代器模式
不能直接std 的迭代器代替麼。iterator 定義迭代器訪問和遍歷元素的介面 concreteiterator 實現具體的迭代器 aggregate 定義的容器,建立相應迭代器物件的介面 concreteaggregate 具體的容器實現建立相應迭代器的介面,該操作返回concreteitera...