Condividi tramite


<iterator>

Definisce le primitive degli iteratori, gli iteratori predefiniti e gli iteratori di flusso, nonché diversi modelli di supporto. Gli iteratori predefiniti includono gli adattatori di inversione e di inserimento. Esistono tre classi di adattatori degli iteratori di inserimento: front, back e general. Tali classi forniscono la semantica di inserimento anziché la semantica di sovrascrittura fornita dagli iteratori delle funzioni membro del contenitore.

#include <iterator>

Note

Gli iteratori costituiscono una generalizzazione dei puntatori, che astraggono dai requisiti di tali puntatori in modo da consentire al programma C++ di utilizzare strutture di dati diverse in maniera uniforme. Gli iteratori fungono da intermediari tra i contenitori e gli algoritmi generici. Anziché operare su tipi di dati specifici, gli algoritmi vengono definiti per operare su un intervallo specificato da un tipo di iteratore. L'algoritmo può operare su qualsiasi struttura di dati che soddisfa i requisiti dell'iteratore. Esistono cinque tipi o categorie di iteratori, ciascuno dotato di un proprio set di requisiti e funzionalità risultanti:

  • Output: spostamento in avanti, può archiviare ma non recuperare i valori forniti da ostream e inserter.

  • Input: spostamento in avanti, può recuperare ma non archiviare i valori forni da istream.

  • In avanti: spostamento in avanti, può archiviare e recuperare i valori.

  • Bidirezionale: spostamento in avanti e indietro, può archiviare e recuperare i valori forniti da list, set, multiset, map e multimap.

  • Accesso casuale: elementi a cui si accede in qualsiasi ordine, può archiviare e recuperare i valori forniti da vector, deque, string e array.

Gli iteratori che dispongono di un numero maggiore di requisiti e quindi di un accesso più efficiente possono essere utilizzati al posto degli iteratori con un numero inferiore di requisiti. Ad esempio, nel caso in cui venga chiamato un iteratore in avanti, può essere invece utilizzato un iteratore ad accesso casuale.

Sono state aggiunte estensioni agli iteratori della libreria standard C++ per supportare diverse situazioni relative alla modalità di debug per gli iteratori verificati e non verificati. Per ulteriori informazioni, vedere Librerie protette: libreria standard C++.

Funzioni

advance

Incrementa un iteratore di un numero specificato di posizioni.

back_inserter

Crea un iteratore in grado di inserire gli elementi nella parte finale di un contenitore specificato.

begin

Recupera un iteratore al primo elemento di un contenitore specificato.

cbegin

Recupera un iteratore costante al primo elemento di un contenitore specificato.

cend

Recupera un iteratore costante all'elemento successivo all'ultimo elemento del contenitore specificato.

distance

Determina il numero di incrementi tra le posizioni a cui puntano due iteratori.

end

Recupera un iteratore all'elemento successivo all'ultimo elemento nel contenitore specificato.

front_inserter

Crea un iteratore in grado di inserire elementi all'inizio di un contenitore specificato.

inserter

Adattatore dell'iteratore che aggiunge un nuovo elemento a un contenitore in corrispondenza di un punto di inserimento specificato.

make_checked_array_iterator

Crea un checked_array_iterator che può essere utilizzato da altri algoritmi.

Nota

Questa funzione è un'estensione Microsoft della libreria C++ standard.Il codice implementato mediante questa funzione non può essere trasferito negli ambienti di compilazione standard di C++ che non supportano questa estensione Microsoft.

make_move_iterator

Restituisce un iteratore di spostamento contenente l'iteratore fornito come relativo iteratore di base archiviato.

make_unchecked_array_iterator

Crea unchecked_array_iterator utilizzabile da altri algoritmi.

Nota

Questa funzione è un'estensione Microsoft della libreria C++ standard.Il codice implementato mediante questa funzione non può essere trasferito negli ambienti di compilazione standard di C++ che non supportano questa estensione Microsoft.

next

Esegue l'iterazione per un numero specificato di volte e restituisce la nuova posizione dell'iteratore.

prev

Esegue l'iterazione in ordine inverso per un numero specificato di volte e restituisce la nuova posizione dell'iteratore.

Operatori

operator!=

Verifica se l'oggetto iteratore a sinistra dell'operatore non è uguale all'oggetto iteratore a destra.

operator==

Verifica se l'oggetto iteratore a sinistra dell'operatore è uguale all'oggetto iteratore a destra.

operator<

Verifica se l'oggetto iteratore a sinistra dell'operatore è minore all'oggetto iteratore a destra.

operator<=

Verifica se l'oggetto iteratore a sinistra dell'operatore è minore o uguale all'oggetto iteratore a destra.

operator>

Verifica se l'oggetto iteratore a sinistra dell'operatore è maggiore dell'oggetto iteratore a destra.

operator>=

Verifica se l'oggetto iteratore a sinistra dell'operatore è maggiore o uguale all'oggetto iteratore a destra.

operator+

Aggiunge un offset a un iteratore e restituisce il nuovo reverse_iterator che punta all'elemento inserito in corrispondenza della nuova posizione dell'offset.

operator-

Sottrae un iteratore da un altro e restituisce la differenza.

Classi

back_insert_iterator

La classe modello descrive un oggetto iteratore di output. Inserisce gli elementi in un contenitore di tipo Container, a cui accede tramite l'oggetto pointer protetto archiviato denominato contenitore.

bidirectional_iterator_tag

Classe che fornisce un tipo restituito per una funzione iterator_category che rappresenta un iteratore bidirezionale.

checked_array_iterator

Classe che accede a una matrice mediante un iteratore verificato ad accesso causale.

Nota

Questa classe è un'estensione Microsoft della libreria C++ standard.Il codice implementato mediante questa funzione non può essere trasferito negli ambienti di compilazione standard di C++ che non supportano questa estensione Microsoft.

forward_iterator_tag

Classe che fornisce un tipo restituito per una funzione iterator_category che rappresenta un iteratore in avanti.

front_insert_iterator

La classe modello descrive un oggetto iteratore di output. Inserisce gli elementi in un contenitore di tipo Container, a cui accede tramite l'oggetto pointer protetto archiviato denominato contenitore.

input_iterator_tag

Classe che restituisce un tipo restituito per una funzione iterator_category che rappresenta un iteratore di input.

insert_iterator

La classe modello descrive un oggetto iteratore di output. Inserisce gli elementi in un contenitore di tipo Container, a cui accede tramite l'oggetto pointer protetto archiviato denominato contenitore. Archivia inoltre l'oggetto iterator protetto, della classe Container::iterator, denominato iter.

istream_iterator

La classe modello descrive un oggetto iteratore di input. Estrae gli oggetti della classe Ty da un flusso di input, a cui accede tramite un oggetto archiviato di tipo puntatore a basic_istream<Elem, Tr>.

istreambuf_iterator

La classe modello descrive un oggetto iteratore di input. Inserisce gli elementi della classe Elem in un buffer del flusso di output, a cui accede tramite un oggetto archiviato di tipo pointer a basic_streambuf<Elem, Tr>.

iteratore

La classe modello viene utilizzata come tipo di base per tutti gli iteratori.

iterator_traits

Classe helper del modello che fornisce tipi critici associati a diversi tipi di iteratori in modo che sia possibile fare riferimento a essi nello stesso modo.

move_iterator

Un oggetto move_iterator consente di archiviare un iteratore ad accesso casuale di tipo RandomIterator. Si comporta come un iteratore ad accesso casuale, salvo quando viene dereferenziato. Viene eseguito il cast in modo implicito del risultato di operator* a value_type&&: per creare un rvalue reference.

ostream_iterator

La classe modello descrive un oggetto iteratore di output. Inserisce gli elementi della classe Type in un flusso di output, a cui accede tramite un oggetto archiviato di tipo pointer a basic_ostream<Elem, Tr>.

Classe ostreambuf_iterator

La classe modello descrive un oggetto iteratore di output. Inserisce gli elementi della classe Elem in un buffer del flusso di output, a cui accede tramite un oggetto archiviato di tipo pointer a basic_streambuf<Elem, Tr>.

output_iterator_tag

Classe che restituisce un tipo restituito per una funzione iterator_category che rappresenta un iteratore di output.

random_access_iterator_tag

Classe che restituisce un tipo restituito per una funzione iterator_category che rappresenta un iteratore ad accesso casuale.

reverse_iterator

La classe modello descrive un oggetto che si comporta come un iteratore ad accesso casuale solo in senso inverso.

unchecked_array_iterator

Classe che accede a una matrice mediante un iteratore ad accesso causale non verificato.

Nota

Questa classe è un'estensione Microsoft della libreria C++ standard.Il codice implementato mediante questa funzione non può essere trasferito negli ambienti di compilazione standard di C++ che non supportano questa estensione Microsoft.

Vedere anche

Riferimenti

Sicurezza dei thread nella libreria standard C++

Libreria di modelli standard

Altre risorse

File di intestazione libreria standard C++