iteratore code>), disponibili in diversi tipi. Iterator - struttura dati che « indica» ; su qualche elemento contenitore e (per alcuni contenitori) può passare all'elemento precedente/successivo. Il vettore utilizza il più potente - iteratore ad accesso casuale(iteratore ad accesso casuale). Un iteratore ad accesso casuale può accedere a un elemento arbitrario del vettore oltre al movimento sequenziale. I vantaggi degli iteratori 1) Quando si eliminano elementi e si esegue l'iterazione sugli elementi utilizzando gli indici ([]), è necessario tenere sempre traccia del numero di elementi rimanenti in modo da non andare oltre il vettore e, utilizzando un iteratore, può usare end() che indica la fine del vettore. 2) Utilizzando un iteratore, puoi facilmente rimuovere e inserire dinamicamente elementi in un vettore. Dichiarazione iteratore 1) Dichiarare un iteratore per un vettore intero e puntarlo al primo elemento nel vettore. vettore <int> miovettore = { 1, 2, 3, 4, 5 }; vector <int>::iterator it = myvector.begin(); 2) Dichiarare un iteratore per un vettore intero e puntarlo all'elemento dopo l'ultimo nel vettore. vettore <int> miovettore = { 1, 2, 3, 4, 5 }; vector <int>::iterator it = myvector.end(); // punta all'elemento dopo l'ultimo, vettore <int>::iteratore it1 = miovettore.end() - 1 ; // indica l'ultimo elemento. Ottenere e visualizzare un valore Recupero e visualizzazione dell'elemento indicato dall'iteratore. cout << *it; Sposta la posizione dell'iteratore Sposta la posizione dell'iteratore di 3 posizioni in avanti. avanzare(it, 3); Creazione di un nuovo iteratore da uno esistente Crea un nuovo iteratore basato su uno esistente, avanzando di 3 posizioni. auto it1 = next(it, 3); Visualizzazione dei valori vettoriali utilizzando un iteratore vettore<int>::iteratore it; for (it = miovettore.begin(); it != miovettore.end(); ++it) { cout<<*it<<" "; } Attraversamento vettoriale Per attraversare il vettore dall'ultimo elemento al primo, viene utilizzato un iteratore inverso reverse_iterator, ottenuto da: 1) rbegin() - restituisce un iteratore inverso che punta all'ultimo elemento del vettore, l'applicazione dell'operazione ++ porta alla transizione all'elemento precedente; 2) rend() - restituisce un iteratore inverso che punta all'elemento precedente del vettore, l'applicazione dell'operazione ++ porta alla transizione al prossimo. vector<int>::reverse_iterator it = myvector.rbegin(); // punta all'ultimo elemento vector<int>::reverse_iterator it = myvector.rend(); // punta a un elemento, // che precede il primo,
iteratore ad accesso casuale
[]
end()
avanzare(it, 3);
reverse_iterator
rbegin()
++
rend()
N
1000 ms 256 Mb Rules for program design and list of errors in automatic problem checking