Gli iteratori sono usati dagli algoritmi per muoversi nei container. Si tratta quindi di una estensione del concetto di puntatore per un array.
Le proprietà essenziali per un iteratore sono:
- l'avanzamento (++);
- la dereferenziazione (*);
- il confronto (!= o ==).
Un semplice iteratore seguirà uno schema similie al seguente:
template<class T>
class Iterator {
public:
// constructors, destructor
// ...
bool operator==(const Iterator<T>&) const;
bool operator!=(const Iterator<T>&) const;
Iterator<T>& operator++(); // prefix
Iterator<T> operator++(int); // postfix
T& operator*() const;
T* operator->() const;
private:
// association with the container ...
};
L'operatore -> permette di usare l'iteratore allo stesso modo di un puntatore.
Se il container associato al nostro iteratore fosse un vettore, sarebbe naturale aspettarsi che venga implementato anche operator--().
Nessun commento:
Posta un commento