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

海南建站中心网站建设 ader

海南建站中心,网站建设 ader,建设厅执业资格注册中心网站,百度网站官方认证怎么做1、迭代器模式的提出 在软件开发过程中#xff0c;操作的集合对象内部结构常常变化#xff0c;在访问这些对象元素的同时#xff0c;也要保证对象内部的封装性。迭代器模式提供了一种利用面向对象的遍历方法来遍历对象元素。迭代器模式通过抽象一个迭代器类#xff0c;不同…1、迭代器模式的提出 在软件开发过程中操作的集合对象内部结构常常变化在访问这些对象元素的同时也要保证对象内部的封装性。迭代器模式提供了一种利用面向对象的遍历方法来遍历对象元素。迭代器模式通过抽象一个迭代器类不同的对象继承自迭代器类外部通过统一接口访问元素。 2、需求描述 设计一个能添加数据元素的容器类并且能够遍历容器数据元素。 3、功能实现 1UML图如下 2代码实现如下 #include iostream #include vector// 抽象迭代器接口 templatetypename T class Iterator { public:virtual T operator*() 0;virtual IteratorT operator() 0;virtual bool operator!(const IteratorT other) const 0;virtual ~Iterator(){}; };// 具体迭代器类 templatetypename T class ConcreteIterator : public IteratorT { public:ConcreteIterator(T* ptr) : m_ptr(ptr) {}T operator*() override {return *m_ptr;}IteratorT operator() override {m_ptr;return *this;}bool operator!(const IteratorT other) const override {const ConcreteIterator* concreteOther dynamic_castconst ConcreteIterator*(other);return m_ptr ! concreteOther-m_ptr;}private:T* m_ptr; };// 具体容器类 templatetypename T class Container { public:void add(const T element) {m_elements.push_back(element);}IteratorT* begin() {return new ConcreteIteratorT(m_elements[0]);}IteratorT* end() {return new ConcreteIteratorT(m_elements[m_elements.size()]);} private:std::vectorT m_elements; };class Client { public:void doWork(){Containerfloat container;container.add(1.0);container.add(2.0);container.add(3.2);Iteratorfloat* itBegin container.begin();Iteratorfloat* itEnd container.end();while (*itBegin ! *itEnd) {std::cout **itBegin \n;(*itBegin);}delete itBegin;delete itEnd;itBegin nullptr;itEnd nullptr;} };int main() {Client obj;obj.doWork();return 0; }程序运行结果如下 根据容器下标实现的迭代器模式方法也可参考设计模式-迭代器模式 C实现_c 迭代器模式_MachineChen的博客-CSDN博客 4、面向对象实现迭代器分析 面向对象实现的迭代器模式是在程序运行时通过虚函数去操作对象元素相比于C中的泛型编程实现迭代器的运行性能较低泛型编程是在编译时已确定访问的元素所以建议使用泛型编程实现迭代器。 5、泛型编程实现迭代器 #include iostream #include vectortemplatetypename T class Iterator { public:Iterator(T* ptr) : m_ptr(ptr) {}// 解引用操作符T operator*() {return *m_ptr;}// 前缀自增操作符Iterator operator() {m_ptr;return *this;}// 后缀自增操作符Iterator operator(int) {Iterator iterator *this;m_ptr;return iterator;}// 比较操作符bool operator!(const Iterator other) const {return m_ptr ! other.m_ptr;}private:T* m_ptr; };templatetypename T class Container { public:void add(const T element) {m_elements.push_back(element);}IteratorT begin() {return IteratorT(m_elements[0]);}IteratorT end() {return IteratorT(m_elements[m_elements.size()]);}private:std::vectorT m_elements; };class Client { public:void doWork(){Containerfloat container;container.add(1.0);container.add(2.0);container.add(3.2);for (Iteratorfloat it container.begin(); it ! container.end(); it) {std::cout *it \n;}} };int main() {Client obj;obj.doWork();return 0; }程序运行结果如下
http://www.hkea.cn/news/14346386/

相关文章:

  • 网站模版化配置重庆网站建设安全
  • cms自助建站系统景区网站建设方案 费用
  • 兰州新区城乡建设局网站网站安装百度商桥
  • 单页面网站做百度推广效果泰安网签房查询
  • 网站怎么添加二级域名广西南宁网络营销网站
  • 国外可以做非法网站吗威海做企业网站
  • 深圳宝安网站建设公司推荐温州网络推广平台建设
  • 做本地网站高级网站开发技术
  • 望野古诗拼音kj6699的seo综合查询
  • 淘宝优惠券查询网站怎么做wordpress怎么关闭网站
  • 方案图网站自定义wordpress后台
  • 用在线网站做的简历可以吗重庆公司网站设计制作
  • 创建网站目录应注意沧州网站艰涩很
  • 做网站用php还是html小程序网站开发公司
  • 网站原型图是什么珠海市住房城乡建设官网
  • html5网页设计实验报告肇庆seo按天计费
  • 做推送用的网站乐清网络平台
  • 网站做动态虚线个人网站找谁建设好
  • 网站备案下来以后怎么做网页网站在手机上内页图不显示
  • 分销网站建设方案大连 响应式网站
  • 河南省洛阳市建设银行的网站长沙好玩的地方景点推荐
  • 仿素材网站源码宿州做企业网站公司
  • 做网站能用本地的数据库嘛网站结构分类
  • 做软件下载网站违法吗晋江网络推广公司
  • 一个备案可以做几个网站php 网站开发流程图
  • 网站建设灬金手指下拉十五人力外包系统
  • 做网站的主营业务简单网站制作成品
  • 常州网站制作公司有哪些手机制作海报的软件免费
  • 单页面网站 seowordpress简约主题分享
  • 怎样做安居客网站wordpress分段加载