Un iteratore è un costrutto del linguaggio informatico che consente a un programma di leggere un gruppo di valori di dati o informazioni in modo sistematico. Gli iteratori consentono inoltre l’accesso individuale a ciascun membro del gruppo, senza influire sul resto del gruppo. Sono utilizzati in molti linguaggi di scripting e programmazione, inclusi C++, Java, PHP e Perl. La loro implementazione è indipendente dagli oggetti che scansionano, quindi possono scansionare qualsiasi tipo di un gruppo di oggetti.
Il viaggio attraverso un gruppo di oggetti con un iteratore viene solitamente chiamato iterazione o attraversamento. Nella maggior parte dei linguaggi informatici, gli iteratori vengono utilizzati per attraversare gruppi di oggetti correlati chiamati raccolte. Le loro implementazioni sono molto flessibili e possono essere utilizzate con raccolte di qualsiasi dimensione. Sono, in generale, più sicuri del semplice accesso agli elementi in una raccolta perché il loro intervallo è limitato agli elementi della raccolta. Sebbene sia ancora possibile accedere a un indice fuori dai limiti, non è probabile che l’iteratore venga utilizzato correttamente.
Gli iteratori vengono definiti, inizializzati e gestiti in memoria in modo diverso a seconda del linguaggio del computer in cui vengono utilizzati. La sintassi generale per loro, al contrario, è simile nella maggior parte delle lingue. Esistono due diversi tipi di sintassi che possono essere utilizzati per gli iteratori, definiti come espliciti o impliciti.
Gli iteratori espliciti implicano la creazione di un oggetto iteratore e quell’oggetto viene quindi utilizzato in un ciclo di attraversamento sugli elementi di una raccolta. Gli iteratori impliciti implicano un tipo speciale di struttura del ciclo che crea l’oggetto iteratore senza che venga specificato in anticipo. L’uso o meno di iteratori espliciti o impliciti per un particolare attraversamento di solito dipende dalle preferenze del programmatore, poiché le differenze nella quantità di codice o nelle prestazioni tra di essi sono trascurabili. La più grande differenza tra iteratori espliciti e impliciti è che gli iteratori espliciti mostrano la creazione di un iteratore nel codice sorgente, mentre gli iteratori impliciti non lo mostrano.
Ogni volta che è disponibile una raccolta di oggetti, è possibile utilizzare un iteratore per scansionarli. A seconda delle capacità di un linguaggio di computer, gli iteratori possono essere utilizzati su array, mappe, elenchi e una varietà di altri tipi di raccolte. Gli iteratori sono una caratteristica relativamente onnipresente dei linguaggi di programmazione e i linguaggi più comuni hanno a disposizione qualche tipo di funzionalità. Alcuni linguaggi di computer consentono iteratori con funzionalità aggiuntive, come restrizioni sul numero di volte in cui si accede a un elemento. Poiché queste funzionalità non sono universali, a volte ci sono modi in cui possono essere implementate indipendentemente dagli iteratori stessi.