[   ^ to index...   |   <-- previous   ]

Code for a common collection heirarchy

Class declarations

class Element { /* ... */ }; // ABSTRACT BASE CLASSES class Iterator { public: virtual bool hasNext() const = 0; virtual Element next() = 0; }; class Collection { public: virtual Iterator * getIterator() = 0; }; // CONCRETE DERIVED CLASSES class ArrayIterator { public: ArrayIterator(ArrayList& owner); virtual bool hasNext(); virtual Element next(); }; class ArrayList { public: friend class ArrayIterator; virtual Iterator * getIterator() { return new ArrayIterator(*this); } };

Usage

Collection * items = new ArrayList(); for (Iterator * i = items->getIterator(); i->hasNext(); ) { Element e = i->next(); // do stuff } // Or: Collection * stuff = new LinkedList(); for (Iterator * i = stuff->getIterator(); i->hasNext(); ) { Element e = i->next(); // do stuff }
Last modified: Thu Jul 20 13:15:49 PDT 2000