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

icon图标素材下载网站wordpress 4.0 中文

icon图标素材下载网站,wordpress 4.0 中文,直播网站 咋做,为什么要推行政务公开网站建设迭代器模式 (Iterator) 迭代器模式 是一种行为型设计模式#xff0c;它提供了一种方法#xff0c;顺序访问一个聚合对象中的各个元素#xff0c;而又不需要暴露该对象的内部表示。 意图 提供一种方法#xff0c;可以顺序访问一个容器对象中的元素#xff0c;而无需暴露其…迭代器模式 (Iterator) 迭代器模式 是一种行为型设计模式它提供了一种方法顺序访问一个聚合对象中的各个元素而又不需要暴露该对象的内部表示。 意图 提供一种方法可以顺序访问一个容器对象中的元素而无需暴露其内部实现。将遍历行为从集合对象中分离出来使得遍历行为可以独立变化。 使用场景 需要顺序访问一个聚合对象中的元素 如数组、链表或集合。 需要支持多种遍历方式 如正序遍历、反序遍历等。 需要解耦遍历算法和容器实现 容器的内部结构可能经常变化但不希望影响遍历逻辑。 参与者角色 迭代器接口 (Iterator) 定义用于访问聚合对象元素的方法。 具体迭代器 (ConcreteIterator) 实现迭代器接口提供对聚合对象的具体遍历。 聚合接口 (Aggregate) 定义创建迭代器的方法。 具体聚合类 (ConcreteAggregate) 实现聚合接口提供一个数据集合并创建相应的迭代器。 示例代码 以下代码展示了迭代器模式的实现用于模拟对一个数字集合的顺序访问。 #include iostream #include vector #include memory// 迭代器接口 template typename T class Iterator { public:virtual ~Iterator() default;// 获取下一个元素virtual T next() 0;// 判断是否还有下一个元素virtual bool hasNext() const 0; };// 聚合接口 template typename T class Aggregate { public:virtual ~Aggregate() default;// 创建迭代器virtual std::unique_ptrIteratorT createIterator() const 0; };// 具体迭代器 template typename T class ConcreteIterator : public IteratorT { private:const std::vectorT collection; // 引用聚合对象size_t index; // 当前索引public:explicit ConcreteIterator(const std::vectorT collection): collection(collection), index(0) {}T next() override {return collection[index];}bool hasNext() const override {return index collection.size();} };// 具体聚合类 template typename T class ConcreteAggregate : public AggregateT { private:std::vectorT collection; // 存储元素的集合public:void add(const T element) {collection.push_back(element);}std::unique_ptrIteratorT createIterator() const override {return std::make_uniqueConcreteIteratorT(collection);} };// 客户端代码 int main() {// 创建一个具体聚合对象ConcreteAggregateint aggregate;aggregate.add(1);aggregate.add(2);aggregate.add(3);aggregate.add(4);aggregate.add(5);// 获取迭代器auto iterator aggregate.createIterator();// 遍历聚合对象std::cout 集合中的元素: ;while (iterator-hasNext()) {std::cout iterator-next() ;}std::cout ;return 0; }代码解析 1. 迭代器接口 (Iterator) 定义了 next 和 hasNext 方法用于访问聚合对象中的元素。子类需要实现这些方法以提供具体的遍历逻辑。 template typename T class Iterator { public:virtual ~Iterator() default;virtual T next() 0;virtual bool hasNext() const 0; };2. 具体迭代器 (ConcreteIterator) 实现了迭代器接口。使用内部索引 index 记录当前遍历的位置并提供 next 和 hasNext 方法。 template typename T class ConcreteIterator : public IteratorT { private:const std::vectorT collection;size_t index; public:explicit ConcreteIterator(const std::vectorT collection): collection(collection), index(0) {}T next() override { return collection[index]; }bool hasNext() const override { return index collection.size(); } };3. 聚合接口 (Aggregate) 定义了 createIterator 方法用于创建迭代器。 template typename T class Aggregate { public:virtual ~Aggregate() default;virtual std::unique_ptrIteratorT createIterator() const 0; };4. 具体聚合类 (ConcreteAggregate) 存储数据集合并实现了 createIterator 方法返回具体的迭代器实例。 template typename T class ConcreteAggregate : public AggregateT { private:std::vectorT collection; public:void add(const T element) { collection.push_back(element); }std::unique_ptrIteratorT createIterator() const override {return std::make_uniqueConcreteIteratorT(collection);} };5. 客户端代码 客户端通过聚合对象获取迭代器并通过迭代器访问集合中的元素。 int main() {ConcreteAggregateint aggregate;aggregate.add(1);aggregate.add(2);aggregate.add(3);auto iterator aggregate.createIterator();while (iterator-hasNext()) {std::cout iterator-next() ;} }优缺点 优点 统一遍历接口 提供了统一的遍历接口客户端无需了解容器的具体实现。 解耦遍历算法和容器实现 容器的内部结构可以改变而不影响遍历逻辑。 支持多种遍历方式 可以为同一个容器实现多种迭代器支持不同的遍历方式。 缺点 类数量增加 每种容器需要实现对应的迭代器类。 遍历效率可能降低 相比直接访问容器元素使用迭代器可能增加额外的开销。 适用场景 需要顺序访问聚合对象中的元素 如遍历集合、列表或数组。 需要支持多种遍历方式 希望为容器实现不同的遍历逻辑。 希望解耦遍历算法和容器实现 通过迭代器封装遍历逻辑避免依赖容器的内部实现。 总结 迭代器模式通过将遍历逻辑封装到迭代器中实现了聚合对象与遍历算法的解耦。它特别适用于需要顺序访问容器元素同时希望支持多种遍历方式的场景。
http://www.dnsts.com.cn/news/9998.html

相关文章:

  • 网站多久才能做起来网络专题策划模板
  • 青岛网站关键词推广商城类网站建设
  • 做环保工程常用的网站北京电商网站开发公司哪家好
  • 淮安哪里做网站平面设计培训学校一年学费
  • 大连网站运营制作方案一级造价师停考最新消息
  • 提供商城网站建设北京做网站开发公司电话
  • 周村网站制作价格低做网站比较大的公司
  • 郑州网站设计哪家公司好怎么登录别人的wordpress
  • 超溜网站建设网页设计流程要怎么写
  • 电商网站seo优化目标分解网站备案 地域
  • 网站推广服务合同模板泛站群
  • 手机网站设计开发上海集酷网站
  • 无线昆明官方网站北京网站建设公
  • asp.net做织梦网站企业网站数防泄露怎么做
  • 个人网站推荐wordpress成品网站免费
  • 企业网站建设费用定金怎么做账网站建设专题的意义
  • html5网站动态效果网站扫二维码怎么做
  • 网站的建设内容wordpress 旅行社模版
  • python网站开发高并发开发公司空置房物管费归口什么费用
  • 公司做个网站多少钱建站网站系统
  • 滨州改版网站建设服务商城网站页面设计
  • 濮阳公司建站安徽网站优化公司价格
  • 网站空间 哪个速度快3d图在线制作
  • 企业网站开发需求分析模板wordpress怎么看访问量
  • 国内贸易在那个网站上做ps培训机构排名
  • 论坛网站免费建设模板下载安装汉中微信网站建设推广
  • 专业微网站页面布局标准格式
  • 哈尔滨网站开发制作wordpress 安装地址
  • 网站开发是什么意思啊电商平台网站开发过程
  • openwrt做网站网推所