設計模式 迭代器模式 C 實現

2021-09-01 11:45:29 字數 948 閱讀 5557

迭代器模式:提供一種方法可以順序訪問乙個聚合物件中各個元素,而又不需要暴露給該物件的內部表示。

場景:1.乙個聚合物件,如陣列、list,應該提供一種方法來讓別人可以訪問他的元素,而又不需要暴露他的內部結構;

2.支援對聚合物件的多種遍歷;

3.為遍歷不同的聚合物件結構提供乙個統一的介面。

迭代器模式主要實現了儲存物件和讀取遍歷物件的分離。

#include #include #include struct book ;

class itemiterator ;

class library;

class bookiterator :public itemiterator

virtual book* first() override

virtual book* next() override

return _books + (_pos++);

} virtual book* end() override

virtual int hassize()

private:

book* _books;

int _pos = 0;

};class library ;

class mylibrary:public library

void addbook(std::string bookname,int price)

private:

book _books[5];

int _pos = 0;

};int main()

return 0;

}

執行結果:

C 設計模式 迭代器模式

迭代器模式 iterator 提供一種方法順序訪問乙個聚合物件中各個元素,而又不暴露該物件的內部表示。迭代器模式結構圖 iterator迭代器抽象類 class iterator public virtual object first 0 virtual object next 0 virtual ...

C 設計模式 迭代器模式

迭代器模式 提供一種方法順序訪問乙個聚合物件中的各個元素,而又不暴露其內部的結構 每一種資料結構 包括自定義 遍歷自身內部的資料方式都是不同的。但是我們又希望和常規的遍歷方式一樣呼叫,就如for和foreach一樣遍歷。想要以相同的方式遍歷不同型別的聚合物件,首先就要有乙個相同的介面方法來統一獲取,...

設計模式 C 迭代器模式

sejimoshi.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include include include using namespace std class student long getid intgetage void setname string name void...