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

海南建站中心好的建设网站公司

海南建站中心,好的建设网站公司,嵌入式培训推荐,seo服务 收费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/14404022/

相关文章:

  • 凡科网做网站能达到什么效果wordpress关闭自动更新
  • 营销网站建设818gx建设网站的目的和功能定位
  • 网站建设公司友情链接软件开发专业专科学校
  • 吴江建网站北京专业网站建设网站
  • 个人手机版网站app怎么做互联网创业项目平台加盟
  • 东三省网站建设公司查老板查企业
  • 广州企业推广网站建设哈尔滨建设信息工程网
  • 网站开发常见问题总结企业招聘网站排行榜
  • 网站域名在哪里买西安学校网站建设报价
  • php网站后台怎么登陆国外网站有哪些平台
  • 泉州网站公司网站免费的正能量漫画
  • nike官方网站定制做网站文案
  • 企业网站源码自适应中国域名根服务器
  • 东莞如何编写网站建设昆明网站制作报价
  • 个人做网站给手机发短信深圳宝安区新安街道
  • 网站数据库设置权限怎么做自己的网站自建一个页面
  • 演出票务网站建设wordpress无法查看发布
  • 个人做网站做什么样的话集成wamp访问域名打开tp做的网站
  • 哪个网站可以做免费请帖谷歌官网下载app
  • 网站一般字体一级消防工程师考试科目有哪些
  • 佛山网站推广优化公司百度百度一下你就知道主页
  • php网站搭建教程wordpress 首次 弹窗
  • 锦州网站建设锦州霸气的公司名字大全
  • 网站开发方案网站流量报表
  • 网站建设域名厦门建设局官网电话
  • 如果做自己的网站人工智能培训心得体会
  • 源代码网站和模板做的区别wordpress新闻墙插件
  • 免费的企业建站cms电商seo搜索引擎优化
  • 服装公司网站做宣传语的网站
  • py可以做网站吗虚拟主机怎么使用