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

网站设计网站设计公司价格桂城网站制作专业公司

网站设计网站设计公司价格,桂城网站制作专业公司,十大素材网站,外贸客户开发系统意图:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 上下文:集合对象内部结构常常变化各异。对于这些集合对象,能否在不暴露其内部结构的同时,让外部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:vector<void*> items;// Aggregate interface
public:Iterator *CreateIterator();int getCount() const;//既可以作为左值,也可以作为又值void** operator[](unsigned int index){if(items.size() <= index){items.resize(index+1);}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.yayakq.cn/news/769206/

相关文章:

  • 网站制作与网页设计一个网站开发的流程
  • 做网站自己能做百度推广吗wordpress移动页面插件
  • 网站seo优化效果石家庄网络推广优化
  • 河南建设工程质量监督局网站jsp和html做的招聘网站
  • 网站总是在建设中公司邮箱怎么在自己电脑上登录
  • 百度统计网站现在学什么行业和技术前景好
  • 龙江网站设计制作自学做网站可以吗
  • 肇庆建设银行招聘网站uniapp小程序开发教程
  • 开设网站维护公司wordpress 提前8小时
  • 宿迁市住房城乡建设局网站企业门户网站建设现状
  • 唐县住房和城乡建设局网站全球包装设计网
  • 阜新市建设小学网站唐山seo推广公司
  • 阿里巴巴国际站运营模式地产项目网站建设ppt
  • 做湲兔费网站视颍计算机专业毕业设计做什么好
  • wordpress 一键脚本谷歌seo优化技巧
  • 网页设计个人网站汽车商城网站模板免费下载
  • 公司做网站需要什么内容WordPress中文king主题
  • js模拟点击网站的按钮社区类网站有哪些
  • 网站视频站建设教程和企业网站一定要花钱吗
  • 网站开发的评论界面模板规划设计公司资质要求
  • Soho外贸常用网站怎么用代码创建网站教程
  • 做网站图片大小临沂设计网站的公司
  • 示范建设验收网站企业为什么要分析环境
  • 哈尔滨seo关键词排名东莞seo计费管理
  • 我做百度_上面有手机网站的_为什么还要做手机网站腾讯科技微信小程序
  • 给我一个网站贴吧石家庄网站优化多少钱
  • 一起做网店网站入驻收费wordpress文章关键字怎么添加
  • html5网站源代码下载wordpress 首页模板修改
  • 那个网站做外贸最好销售 网站
  • dedecms网站首页绍兴金圣建设有限公司网站