【27】c++设计模式——>迭代器模式(1)

迭代器实现通常包含两个主要组件:迭代器和聚合对象,聚合对象一般是vector,list,set,map等,迭代器负责在聚合对象上进行遍历,并提供了一种统一的访问元素的方法。聚合对象用来存储,并提供创建迭代器的接口。通过将遍历算法与聚合对象分离开来。

迭代器接口

c 复制代码
#include <iostream>
#include <vector>

// 迭代器接口
class Iterator {
public:
    virtual bool hasNext() const = 0; //是否存在下一个元素
    virtual int next() = 0; //返回下一个元素
};

// 具体的迭代器实现
class ConcreteIterator : public Iterator {
private:
    std::vector<int> collection; //定义一个容器
    int position; 

public:
    ConcreteIterator(const std::vector<int>& coll) : collection(coll), position(0) {}

    bool hasNext() const override {
        return position < collection.size();
    }

    int next() override {
        return collection[position++];
    }
};

// 聚合对象
class Aggregate {
private:
    std::vector<int> collection;

public:
    void add(int item) {
        collection.push_back(item);
    }

    Iterator* createIterator() const {
        return new ConcreteIterator(collection);
    }
};

int main() {
    Aggregate aggregate;
    aggregate.add(1);
    aggregate.add(2);
    aggregate.add(3);

    Iterator* iterator = aggregate.createIterator();

    while (iterator->hasNext()) {
        int item = iterator->next();
        std::cout << item << " ";
    }

    delete iterator;

    return 0;
}
相关推荐
groundhappy2 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕3 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫4 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生4 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.115 小时前
linux基础IO
linux·运维·服务器
BelongPanda7 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯7 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_777998348 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器
yunwei378 小时前
eBPF 教程:检查 exec 后真正安装的可执行镜像
linux·开源
笑锝没心没肺8 小时前
yum update 报错:GPG key retrieval failed: [Errno 14] HTTPS Error 404 - Not Found
linux·运维·服务器