迭代器实现通常包含两个主要组件:迭代器和聚合对象,聚合对象一般是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;
}