iterators stl
Una panoramica completa degli iteratori in STL.
In questo tutorial, esamineremo i dettagli degli iteratori, i loro tipi, i vantaggi e le varie funzioni che supportano.
download gratuito di alta qualità del convertitore da youtube a mp3
Cos'è un iteratore? In generale, un iteratore è proprio come qualsiasi oggetto che punta a un particolare elemento in un intervallo di dati come un array o un contenitore. Un iteratore è proprio come un puntatore in C.
=> Cerca qui l'intera serie di formazione C ++.
Cosa imparerai:
- Panoramica
- Tipi di iteratori
- Vantaggi degli iteratori
- Funzioni iteratore
- Conclusione
- Lettura consigliata
Panoramica
In AWL, un iteratore è un oggetto che può essere utilizzato per attraversare o scorrere gli elementi nel contenitore utilizzando un insieme di operatori come operatore di incremento (++) o operatore di dereferenziazione (*).
Gli iteratori sono cruciali nella programmazione STL in quanto svolgono un ruolo importante nel connettere gli algoritmi al container oltre ad accedere e manipolare i dati memorizzati all'interno dei container.
Tipi di iteratori
A seconda della funzionalità implementata dagli iteratori, sono classificati come segue:
- Iteratori di input e output : Questi sono i tipi di iteratori più semplificati. Sono particolarmente utili nelle operazioni di input-output sequenziali contenenti single-pass.
- Forward Iterators : Questi sono proprio come gli iteratori di input ma hanno una direzione, ovvero la direzione in avanti, nel senso che possono essere utilizzati per attraversare un intervallo nella direzione di inoltro. Quando gli iteratori in avanti non sono costanti, possono essere utilizzati anche come iteratori di output. La maggior parte dei contenitori STL standard supporta almeno gli iteratori in avanti.
- Iteratori bidirezionali : Sono simili agli iteratori in avanti con l'unica differenza che sono bidirezionali. Ciò significa che possiamo utilizzare questi iteratori bidirezionali per attraversare l'intervallo sia in avanti che all'indietro.
- Iteratori ad accesso casuale : Gli iteratori ad accesso casuale sono i più potenti tra tutti gli iteratori. Questi sono iteratori non sequenziali. Gli iteratori ad accesso casuale ci consentono di accedere a qualsiasi valore casuale applicando un offset al valore corrente senza dover passare attraverso ogni elemento in sequenza. Presentano proprietà simili come i puntatori in C.
Una cosa da notare è che non tutti i contenitori STL supportano tutti gli iteratori. Contenitori diversi supportano iteratori diversi a seconda dei requisiti della loro funzionalità.
Di seguito è riportato l'elenco dei contenitori che utilizzano diversi iteratori:
Contenitori | Iteratori |
---|---|
Carta geografica | Bidirezionale |
Pila | Nessun iteratore |
Coda | Nessun iteratore |
Coda prioritaria | Nessun iteratore |
Elenco | Bidirezionale |
Vettore | Accesso casuale |
e | Accesso casuale |
Multimappa | Bidirezionale |
Impostato | Bidirezionale |
Multiset | Bidirezionale |
Vantaggi degli iteratori
Gli iteratori sono estremamente utili soprattutto durante la programmazione utilizzando intervalli e contenitori diversi.
Alcuni dei vantaggi dell'utilizzo degli iteratori nella programmazione possono essere riassunti di seguito:
# 1) Riusabilità del codice
Finché utilizziamo iteratori per accedere agli elementi nel nostro programma, possiamo semplicemente cambiare il nome del contenitore nella nostra definizione di iteratore e utilizzare il resto del codice in modo simile ogni volta che abbiamo bisogno di cambiare il contenitore.
Ciò è particolarmente utile negli scenari in cui si prevede di sostituire un contenitore vettoriale utilizzando un contenitore elenco. Se al posto degli iteratori usassimo l'operatore (), il codice per accedere agli elementi sarebbe inutile quando cambiamo i contenitori.
# 2) Facilità e comodità di programmazione
Gli iteratori sono dotati di varie funzioni integrate che ci aiutano ad attraversare e accedere al contenuto del contenitore in modo facile e conveniente.
Per esempio , non dobbiamo continuare a controllare la fine della lista o come un array che dobbiamo fare mentre usiamo gli operatori () e dobbiamo alterare il codice del programma come quando vogliamo aggiungere elementi, e dobbiamo cambiarli per un ciclo .
Quando si usano gli iteratori, possiamo accedere direttamente alle funzioni begin () e end () degli iteratori senza dover tenere una scheda quando raggiungiamo la fine della lista e inoltre non abbiamo bisogno di cambiarli per un ciclo.
# 3) Aggiungi / Rimuovi dinamico
Durante l'utilizzo degli iteratori possiamo aggiungere o rimuovere facilmente e dinamicamente gli elementi nel contenitore senza dover spostare gli elementi come dobbiamo fare negli operatori ().
Dimostriamolo con il seguente esempio:
#include #include using namespace std; int main() { vector vec1 = { 1, 1, 2 }; // Declaring an iterator vector::iterator i; // Inserting element for (i = vec1.begin(); i != vec1.end(); ++i) { if (i == vec1.begin()) { i = vec1.insert(i, 3); // insert 3 at the beginning of vec1 } } // contents of vec1 3 1 1 2 cout<<'Vector contents after addition'; cout< Produzione:
Contenuto del vettore dopo l'aggiunta
3 1 1 2
Contenuti vettoriali dopo la cancellazione
3 1 2
Come visto nell'esempio sopra, vediamo che usando gli iteratori possiamo facilmente aggiungere o rimuovere elementi da un contenitore (vettore in questo caso), senza dover ricorrere alla complessa programmazione di elementi mobili e ristrutturando il contenitore.
Funzioni iteratore
Poiché gli iteratori stessi sono costrutti incorporati, supportano varie operazioni che possono essere eseguite sugli oggetti iteratori. Queste operazioni / funzioni ci consentono di attraversare in modo efficiente l'intervallo e di manipolare anche gli elementi all'interno del contenitore.
Ora vedremo alcune delle principali operazioni supportate dagli iteratori.
- inizio: Restituisce la prima o la posizione iniziale dell'iteratore.
- fine: Restituisce l'ultima posizione o la posizione 'dopo la fine' dell'iteratore.
- prev: Restituisce il nuovo iteratore dopo aver decrementato il numero di posizioni fornite nell'argomento.
- Il prossimo: Restituisce un nuovo iteratore dopo aver fatto avanzare o incrementato il numero di posizioni fornite nell'argomento.
- inseritore: Inserisce l'elemento in una determinata posizione in un contenitore.
- progredire: Incrementa la posizione dell'iteratore al numero specificato fornito nell'argomento.
Dimostreremo l'uso di alcune di queste funzioni / operazioni nel seguente programma:
#include #include #include using namespace std; int main() { vector v = { 1, 1,2,3,5 }; // declaring iterators to a vector vector::iterator itr1 = v.begin(); vector::iterator itr2 = v.end(); auto it = next(itr1, 2); // displaying iterator position cout << 'Using next() the new iterator is at: '; cout << *it << ' '; cout << endl; auto it1 = prev(itr2, 2); // displaying iterator position cout << 'The position of new iterator using prev() is: '; cout << *it1 << ' '; cout << endl; //advance advance(itr1,3); // displaying iterator position cout << 'After advance operation,itr1 is positioned at: '; cout << *itr1 << ' '; cout << endl; return 0; }
Produzione:
Usando next () il nuovo iteratore è a: 2
La posizione del nuovo iteratore che utilizza prev () è: 3
Dopo l'operazione di anticipo itr1 si posiziona su: 3
Utilizzando il programma di cui sopra abbiamo dimostrato l'uso di varie operazioni di iterazione.
Conclusione
Siamo quindi giunti alla fine di questo tutorial sugli iteratori.
Finora abbiamo discusso le basi di STL, dal nostro prossimo tutorial in poi inizieremo con i contenitori STL e la loro programmazione.
=> Controlla qui la serie completa di corsi di formazione GRATUITI C ++.
Lettura consigliata
- Coda prioritaria in AWL
- Array in STL
- 70+ MIGLIORI tutorial C ++ per imparare la programmazione C ++ GRATUITAMENTE
- Stringhe, coppie e tuple in STL
- SET In STL
- Algoritmi in STL
- Miglior serie di tutorial GRATUITI per C #: la guida definitiva a C # per principianti
- Standard Template Library (STL): una breve introduzione