亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++設計模式之迭代器模式(Iterator)

2020-05-23 13:34:51
字體:
來源:轉載
供稿:網友

迭代器在STL運用廣泛,類似容器的迭代已經成為其重要特性,而迭代器模式則是利用迭代器概念進行的抽象運用,迭代器模式運用廣泛和有用,因為其能夠不考慮數據的存儲方式,而是直接面對數據進行迭代,也就是說我們不用考慮集合是數組(或vector)、鏈表、棧還是隊列,而是通過統一的接口進行順序的訪問。

作用

迭代器模式提供了一種順序訪問容器中元素的方法,而無需了解器內部的類型和結構,該模式的核心思想將訪問和遍歷容器對象的功能交給一個外部的迭代器對象,該迭代器定義了訪問聚合對象的接口,

類視圖

C++,設計模,迭代器模式

實現

class Item{public:  Item(string strName,float price):  m_name(strName),m_price(price){}  Item(Item& item):  m_name(item.strName),m_price(item.price){}    string tostring()  {    std::ostringstream buffer;    buffer << f;    string strPrice = buffer.str();    strName += " :";        return strName + strPrice;  }private:  string m_name;  float m_price;}class Container;class Menu;class Iterator{public:  virtual ~Iterator(){}  virtual void first()=0;  virtual void next()=0;  virtual bool hasnext()=0;  virtual Item* current()=0;protected:  Container * m_pContainer;}class Container {public:  virtual ~Container() {};  virtual void CreateIterator()= 0; protected:  Observer(){};};class MenuIterator : public Iterator{   Menu * m_menu;   int curpos; public:   MenuIterator(Menu*a):m_menu(a),curpos(0){}   virtual void first()   {     curpos=0;   }   virtual void next()   {     curpos++;   }   virtual bool hasnext()   {     if(curpos >=0 && curpos< m_menu->size())   }   virtual Item* current()   {    return m_menu->value(curpos);   }}; class Menu : public Container{public:  virtual ~Menu()   {    for(int i=0 ; i< m_items.size(); i++)    {      delete m_items[i];    }  };  Iterator* CreateIterator()   {    return new MenuIterator(this);   }    int size()  {    return m_items.size();  }  Item* value(int nIndex)  {    if(nIndex>=0 && nIndex<m_items.size())    {      return m_items[nIndex];    }    else    {      return NULL;    }  }  void additem(Item& item)  {    Item *pItem = new Item(item);    m_items.push_back(pItem);  }    private:   vector<item* > m_items; };int main(){  Item it1("chicken", 10.0);    Item it2("Apple", 5.0);    Item it3("Beaf", 20.0);    Item it4("soup",15.0);        Menu menu;  menu.additem(it1);  menu.additem(it2);  menu.additem(it3);  menu.additem(it4);      Iterator itor = menu.CreateIterator();  while(itor->hasnext())  {    Item* pItem = itor->current();    if(pItem)      cout<<pItem->tostring()<<endl;    itor->next();  }}

對于上例來說,Iterator接口是不變的,不管menu中的聚合內容的形式如何變化,只要menu根據其類型提供其取值、大小等的操作,那么對于使用者來說都是一樣的操作。

應用場景

  • 訪問一個聚合對象的內容而無需暴露它的內部表示;
  • 支持對聚合對象的多種遍歷(從前到后,從后到前);
  • 為遍歷不同的聚合結構提供一個統一的接口,支持多態迭代。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品免费视频| 亚洲欧美中文字幕| 欧美另类在线播放| 2019日本中文字幕| www.欧美精品| www国产亚洲精品久久网站| 成人黄色在线观看| 在线精品国产成人综合| 中文字幕日韩电影| 亚洲午夜久久久久久久| 国模吧一区二区三区| 91精品国产高清久久久久久久久| 777精品视频| 欧美日韩国产专区| 日韩欧美高清在线视频| 秋霞成人午夜鲁丝一区二区三区| 欧美另类交人妖| 成人网在线免费观看| 国产在线精品成人一区二区三区| 国产亚洲精品va在线观看| 午夜精品国产精品大乳美女| 久久精品国产久精国产一老狼| 国产精品都在这里| 日韩电视剧免费观看网站| 国产在线一区二区三区| 欧美日韩一区二区精品| 日韩欧美在线视频免费观看| www.久久色.com| 亚洲精品一区中文字幕乱码| 欧美性猛交xxxx免费看漫画| 欧美午夜美女看片| 在线播放亚洲激情| 国产精品入口日韩视频大尺度| 欧美亚洲成人免费| 国产区亚洲区欧美区| 国产在线观看精品一区二区三区| 久久久成人的性感天堂| 精品香蕉一区二区三区| 亚洲欧美精品一区| 一本色道久久综合狠狠躁篇怎么玩| 亚洲精品久久久久中文字幕欢迎你| 欧美成人午夜激情视频| 国产99久久精品一区二区| 久久久久免费视频| 精品国产区一区二区三区在线观看| 最近更新的2019中文字幕| 欧美日韩一区二区免费视频| 国产偷国产偷亚洲清高网站| 日韩精品极品毛片系列视频| 在线成人激情黄色| 久久99精品久久久久久琪琪| 国产精品黄页免费高清在线观看| 日韩在线视频免费观看高清中文| 亚洲性视频网站| 亚洲第一av网| 中文字幕久热精品视频在线| 亚洲free性xxxx护士白浆| 精品呦交小u女在线| 美女扒开尿口让男人操亚洲视频网站| 中文字幕一精品亚洲无线一区| 成人在线免费观看视视频| 日韩中文字幕视频| 欧美美女操人视频| 精品一区二区三区电影| 亚洲精品99999| 伊人一区二区三区久久精品| 国产精品欧美激情在线播放| 亚洲成人激情视频| 欧美日韩高清区| 日韩免费在线播放| 岛国视频午夜一区免费在线观看| 97av视频在线| 欧美激情亚洲国产| 美日韩精品视频免费看| 中文字幕日韩在线视频| 欧美高跟鞋交xxxxxhd| www.美女亚洲精品| 国产精品福利片| 国产亚洲一级高清| 亚洲男人的天堂网站| 日韩av片永久免费网站| 日韩电视剧在线观看免费网站| 亚洲女同精品视频| 91wwwcom在线观看| 青青久久av北条麻妃黑人| 欧美性xxxx极品高清hd直播| 欧美成人剧情片在线观看| 久久免费视频观看| 91亚洲国产成人精品性色| 国产精品久久久久久久久免费看| 午夜精品一区二区三区在线播放| 日韩欧美福利视频| 中日韩美女免费视频网址在线观看| 美女黄色丝袜一区| 亚洲偷熟乱区亚洲香蕉av| 亚洲人午夜精品免费| 欧美日韩另类字幕中文| 久久国产精品久久国产精品| 亚洲精品电影网在线观看| 国产女同一区二区| 8090成年在线看片午夜| 成人激情电影一区二区| 91精品成人久久| 亚洲精品免费av| 亚洲第一精品电影| 国产日韩欧美一二三区| 亚洲理论电影网| 国产精品igao视频| 欧美亚洲午夜视频在线观看| 国产精品自产拍高潮在线观看| 国产日韩一区在线| 亚洲福利在线观看| 国产丝袜精品第一页| 欧美www视频在线观看| 精品女同一区二区三区在线播放| 亚洲福利影片在线| 久久久国产在线视频| 亚洲欧美日韩精品久久亚洲区| 欧美亚洲国产日本| 亚洲精品999| 国产精品视频永久免费播放| 国产欧美久久一区二区| 欧美与黑人午夜性猛交久久久| 亚洲丝袜av一区| 国产精品91久久久| 丝袜美腿精品国产二区| 在线播放国产精品| 亚洲性生活视频| 最近2019年日本中文免费字幕| 亚洲天堂日韩电影| 亚洲aⅴ男人的天堂在线观看| 日韩视频免费观看| 亚洲国产古装精品网站| 亚洲福利在线播放| 国产精品狼人色视频一区| 亚洲国内精品在线| 日韩毛片在线观看| 欧美亚洲免费电影| 日韩免费av在线| 成人免费在线视频网址| 国产69精品久久久久久| 九九久久久久99精品| 91免费欧美精品| 久久久久久久久中文字幕| 欧美另类69精品久久久久9999| 久久天堂av综合合色| 欧美日韩国产一区中文午夜| 中文字幕日韩免费视频| 国产精品高潮呻吟久久av野狼| 久久久久久亚洲| 国产精自产拍久久久久久| 欧美国产日韩一区二区在线观看| 伊人久久久久久久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 日韩av资源在线播放| 久久久伊人欧美| 国产成人极品视频| 日韩欧中文字幕| 日韩在线欧美在线国产在线| 久久偷看各类女兵18女厕嘘嘘| 久久91亚洲人成电影网站| 成人免费视频网址| 九九视频这里只有精品| 日韩免费高清在线观看|