網(wǎng)站設(shè)計(jì)概述500字關(guān)鍵詞批量調(diào)詞軟件
迭代器實(shí)現(xiàn)通常包含兩個(gè)主要組件:迭代器和聚合對(duì)象,聚合對(duì)象一般是vector,list,set,map等,迭代器負(fù)責(zé)在聚合對(duì)象上進(jìn)行遍歷,并提供了一種統(tǒng)一的訪問(wèn)元素的方法。聚合對(duì)象用來(lái)存儲(chǔ),并提供創(chuàng)建迭代器的接口。通過(guò)將遍歷算法與聚合對(duì)象分離開(kāi)來(lái)。
迭代器接口
#include <iostream>
#include <vector>// 迭代器接口
class Iterator {
public:virtual bool hasNext() const = 0; //是否存在下一個(gè)元素virtual int next() = 0; //返回下一個(gè)元素
};// 具體的迭代器實(shí)現(xiàn)
class ConcreteIterator : public Iterator {
private:std::vector<int> collection; //定義一個(gè)容器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++];}
};// 聚合對(duì)象
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;
}