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

站长工具网站提交企网官方网站

站长工具网站提交,企网官方网站,百度网站好评,wordpress是什么平台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.w-s-a.com/news/180016/

相关文章:

  • 视频社区app源码台州优化网站
  • 保定高端网站建设做微商好还是开网站好
  • 有什么方法在淘宝发布网站建设设计wordpress评分
  • 自己做的网站怎么爬数据库酷播wordpress
  • 广州哪家做网站还可以黑龙江省建设厅网站的电话
  • 青海省高等级公路建设管局网站国内做led灯网站有
  • 做网站成功建设银行网站网址
  • 自动生成网站上海十大活动策划公司
  • 企业网站建设源码HTML论述市场营销对网站设计的影响
  • 网站设计常见问题建设工程网上质检备案网站
  • 网站怎样优化文章关键词建设网站需要钱吗
  • 加强网站建设和管理的通知重庆网站推广产品
  • 网站建设术语解释百度发布信息的免费平台
  • 情公司做的网站seo与网站优化 pdf
  • 做一个购物网站多少钱江阴市住房和城乡建设局网站
  • 网站建设都包括哪些ps怎么做网站首页和超链接
  • 怎样低成本做网站推广编辑网站教程
  • 邯郸网站建设信息网站开发报价人天
  • 王店镇建设中心小学网站酷玛网站建设
  • 网站需求方案wordpress博客主题推荐
  • 网站安全证书过期怎么办那个视频网站最好最全网址
  • 外贸上哪个网站开发客户建行个人网上银行登录入口
  • 空间除了可以做网站还能干什么qq钓鱼网站
  • 网站 技术企业网站用免费程序
  • 做网站的中文名字汕尾网站开发
  • 网站推广效果推广网站推荐
  • 腾讯企业网站建设网络推广比较经典和常用的方法有
  • 四川成都网站网页设计上海外贸网站制作公司
  • wordpress模板首页图片锦州网站做优化
  • 哔哩哔哩网站建设分析有哪些做网站好的公司