当前位置: 首页 > news >正文

云南网络网站推广外贸网站交易平台

云南网络网站推广,外贸网站交易平台,深圳关键词,自适应网站模板公司意图#xff1a;提供一种方法顺序访问一个聚合对象中的各个元素#xff0c;而又不需要暴露该对象的内部表示。 上下文#xff1a;集合对象内部结构常常变化各异。对于这些集合对象#xff0c;能否在不暴露其内部结构的同时#xff0c;让外部Client透明地访问其中包含的元素… 意图提供一种方法顺序访问一个聚合对象中的各个元素而又不需要暴露该对象的内部表示。 上下文集合对象内部结构常常变化各异。对于这些集合对象能否在不暴露其内部结构的同时让外部Client透明地访问其中包含的元素同时让这种“透明遍历”也为“同一种算法在多种集合对象上进行操作”提供可能 UML Iterator定义访问和遍历元素的接口.NET中定义了标准的IEnumrator接口。ConcreteIterator实现Iterator接口同时在对Aggregate遍历时跟踪当前的位置。Aggregate定义创建相应Iterator对象的接口.NET中定义了标准的IEnumrable接口。ConcreteAggregate实现创建相应Iterator对象的接口该操作返回一个适当的ConcreteIterator实例。 注意.NET中的foreach关键字在编译时会自动创建迭代器对象并使用该对象对集合进行遍历。.NET中的yield return关键字使得定义迭代器对象更加容易。 代码 #include iostream #include list #include array #include vector using namespace std;//Iterator迭代器抽象类 class Iterator { public:virtual void* First() 0;virtual void* Next() 0;virtual bool IsDone() 0;virtual void* CurrentItem() 0; };//Aggregate聚集抽象类 class Aggregate { public:virtual Iterator *CreateIterator() 0; };//ConcreteAggregate具体聚集类 继承Aggregate class ConcreteAggregate:public Aggregate { public:vectorvoid* items;// Aggregate interface public:Iterator *CreateIterator();int getCount() const;//既可以作为左值也可以作为又值void** operator[](unsigned int index){if(items.size() index){items.resize(index1);}return items[index];} };class ConcreteIterator:public Iterator { public:ConcreteAggregate *ca;int current;ConcreteIterator(ConcreteAggregate *c):ca(c){this-current 0;}virtual void* First();virtual void* Next();virtual bool IsDone();virtual void* CurrentItem(); };Iterator *ConcreteAggregate::CreateIterator() {return new ConcreteIterator(this); }int ConcreteAggregate::getCount() const {return items.size(); }void *ConcreteIterator::First() {return *(*ca)[0]; }void *ConcreteIterator::Next() {if(current ca-getCount()){current;}if(current ca-getCount()){return *(*ca)[current];}return nullptr; }bool ConcreteIterator::IsDone() {return current ca-getCount()?true:false; }void *ConcreteIterator::CurrentItem() {return *(*ca)[current]; }class ConcreteIteratorDesc:public Iterator { public:ConcreteAggregate *ca;int current;ConcreteIteratorDesc(ConcreteAggregate *c):ca(c){this-current c-getCount() - 1;}virtual void* First();virtual void* Next();virtual bool IsDone();virtual void* CurrentItem(); }; void *ConcreteIteratorDesc::First() {if(ca-getCount() 0){return nullptr;}return *(*ca)[ca-getCount() - 1]; }void *ConcreteIteratorDesc::Next() {if(current 0){current--;}if(current 0){return *(*ca)[current];}return nullptr; }bool ConcreteIteratorDesc::IsDone() {return current 0?true:false; } void *ConcreteIteratorDesc::CurrentItem() {return *(*ca)[current]; } int main() {ConcreteAggregate ca;*(ca[0]) (void*)5;*ca[1] (void*)10;*ca[2] (void*)15;*ca[3] (void*)20; // cout (int) *ca[0] endl; // cout (int) *ca[1] endl; // cout ca.getCount() endl;Iterator *i new ConcreteIterator(ca);cout 开始遍历 endl;while(!i-IsDone()){cout (int)i-CurrentItem() endl;i-Next();}Iterator *i_desc new ConcreteIteratorDesc(ca);cout 开始反向遍历 endl;while(!i_desc-IsDone()){cout (int)i_desc-CurrentItem() endl;i_desc-Next();}cout --end-- endl;return 0; }结果 开始遍历 5 10 15 20 开始反向遍历 20 15 10 5 --end--
http://www.hkea.cn/news/14399759/

相关文章:

  • 工地招聘网站自建网站外贸怎么做
  • 电脑用虚拟机做网站wordpress 上传错误
  • mvc5网站开发之美电子版搭建网站的企业
  • 做国际贸易做什么网站那间公司做网站好
  • 石家庄网站建设有了代刷网的源码怎么做网站
  • phpmysql网站开发入门与提高找做仿网站
  • 优惠券网站要怎么做网站备案期间可以用二级域名访问网站吗
  • 软文网站上海工商网企业信息查询系统官网
  • 网站建设的经济可行性什么语言网站比较安全
  • 如何做企业网站php短视频seo搜索优化
  • 网站制作免费软件做网站或者app
  • 网站开发设计工程师岗位职责六安建六安建设网站
  • 建网站教程视频下载南京网站建设价格
  • 外贸网站如何做外链做营销看的网站有哪些内容
  • 英文旅游网站建设江苏网页定制
  • 辛集seo网站优化电话网站seo流程
  • 娱乐平台网站开发免费网站定制开发流程和功能
  • 海力建设集团有限公司网站工业设计招聘
  • 石景山建网站产品营销策略包括哪些内容
  • 沙漠风网站建设怎么样朔州网站建设公司
  • 柳州网站建设数公式大全公证网站建设管理
  • 企业官网网站模板下载wordpress数据表开头
  • 产品价格的网站建设大同百度做网站多少钱
  • 可以做ppt的网站有哪些内容个人做网站公司
  • 网站开发费用明细网站开发需求分析内容
  • 虚拟技术对网站建设维护的影响网站开发如何做账务处理
  • 深圳专业建网站网站建设哪家好xm37
  • 至尊传奇手游官方正版下载手机优化助手
  • 网站建设猫腻做网站时字幕怎么做
  • 什么网站可以做微官网网站开发费走什么科目