Što je iterator?

Iterator je konstrukcija računalnog jezika koja dopušta programu da na sustavan način čita kroz grupu vrijednosti podataka ili dijelova informacija. Iteratori također omogućuju individualni pristup svakom članu grupe, bez utjecaja na ostatak grupe. Koriste se u mnogim skriptnim i programskim jezicima, uključujući C++, Java, PHP i Perl. Njihova implementacija je neovisna o objektima koje skeniraju, tako da mogu skenirati bilo koju vrstu grupe objekata.

Putovanje kroz grupu objekata s iteratorom obično se naziva iteriranjem ili prelaskom. U većini računalnih jezika, iteratori se koriste za prelazak grupa povezanih objekata koji se nazivaju zbirke. Njihove implementacije su vrlo fleksibilne i mogu se koristiti s zbirkama bilo koje veličine. Oni su općenito sigurniji od jednostavnog pristupa elementima u zbirci jer je njihov raspon ograničen na elemente u kolekciji. Iako je još uvijek moguće pristupiti indeksu izvan granica, nije vjerojatno da li se iterator pravilno koristi.

Iteratori se definiraju, inicijaliziraju i njima se rukuje u memoriji različito ovisno o jeziku računala u kojem se koriste. Opća sintaksa za njih je, naprotiv, slična u većini jezika. Postoje dvije različite vrste sintakse koje se mogu koristiti za iteratore, definirane kao eksplicitne ili implicitne.

Eksplicitni iteratori uključuju kreiranje objekta iteratora, a taj se objekt zatim koristi u petlji prelaska preko elemenata kolekcije. Implicitni iteratori uključuju posebnu vrstu strukture petlje koja stvara objekt iteratora bez prethodnog navođenja. Koriste li se eksplicitni ili implicitni iteratori za bilo koje određeno prelaženje obično ovisi o preferencijama programera, budući da su razlike u količini koda ili performansi između njih zanemarive. Najveća razlika između eksplicitnih i implicitnih iteratora je u tome što eksplicitni iteratori pokazuju stvaranje iteratora u izvornom kodu, dok implicitni iteratori to ne pokazuju.

Kad god je dostupna zbirka objekata, za njihovo skeniranje može se koristiti iterator. Ovisno o mogućnostima računalnog jezika, iteratori se mogu koristiti na nizovima, kartama, popisima i raznim drugim vrstama zbirki. Iteratori su relativno sveprisutna značajka programskih jezika, a većina uobičajenih jezika ima neku vrstu dostupne funkcionalnosti. Neki računalni jezici dopuštaju iteratore s dodatnim značajkama, poput ograničenja broja pristupa elementu. Budući da ove značajke nisu univerzalne, ponekad postoje načini na koje se mogu implementirati neovisno o samim iteratorima.