Mis on iteraator?

Iteraator on arvutikeele konstruktsioon, mis võimaldab programmil lugeda süstemaatiliselt läbi andmeväärtuste rühma või teabe. Iteraatorid võimaldavad ka individuaalset juurdepääsu rühma igale liikmele, ilma et see mõjutaks ülejäänud rühma. Neid kasutatakse paljudes skriptimis- ja programmeerimiskeeltes, sealhulgas C++, Java, PHP ja Perl. Nende rakendamine ei sõltu skannitavatest objektidest, seega saavad nad skannida mis tahes tüüpi objektide rühma.

Iteraatoriga läbi objektide rühma reisimist nimetatakse tavaliselt itereerimiseks või läbimiseks. Enamikus arvutikeeltes kasutatakse iteraatoreid seotud objektide rühmade, mida nimetatakse kogudeks, läbimiseks. Nende teostused on väga paindlikud ja neid saab kasutada mis tahes suurusega kollektsioonidega. Need on üldiselt turvalisemad kui lihtsad elemendid kogus, kuna nende ulatus on piiratud kogus olevate elementidega. Kuigi piirivälisele indeksile on endiselt võimalik juurde pääseda, pole see tõenäoline, kui iteraatorit kasutatakse õigesti.

Iteraatorid määratletakse, initsialiseeritakse ja neid käsitletakse mälus erinevalt, olenevalt arvutikeelest, milles neid kasutatakse. Seevastu nende üldine süntaks on enamikus keeltes sarnane. Iteraatorite jaoks saab kasutada kahte erinevat tüüpi süntaksit, mis on määratletud eksplitsiitsena või kaudsena.

Eksplitsiitsed iteraatorid hõlmavad iteraatoriobjekti loomist ja seda objekti kasutatakse seejärel kogu elementide läbimises. Kaudsed iteraatorid hõlmavad spetsiaalset tüüpi tsüklistruktuuri, mis loob iteraatori objekti ilma seda eelnevalt täpsustamata. See, kas konkreetse läbimise jaoks kasutatakse eksplitsiitseid või kaudseid iteraatoreid või mitte, sõltub tavaliselt programmeerija eelistustest, kuna koodihulga või jõudluse erinevused nende vahel on tühised. Suurim erinevus eksplitsiitsete ja kaudsete iteraatorite vahel on see, et eksplitsiitsed iteraatorid näitavad iteraatori loomist lähtekoodis, samas kui kaudsed iteraatorid seda ei näita.

Kui objektide kogu on saadaval, saab nende skannimiseks kasutada iteraatorit. Olenevalt arvutikeele võimalustest saab iteraatoreid kasutada massiivides, kaartides, loendites ja paljudes muudes kogutüüpides. Iteraatorid on programmeerimiskeelte suhteliselt üldlevinud funktsioon ja enamikul levinud keeltel on teatud tüüpi funktsioonid saadaval. Mõned arvutikeeled lubavad iteraatoreid koos lisafunktsioonidega, nagu piirangud elemendile juurdepääsu korduste arvule. Kuna need funktsioonid ei ole universaalsed, on mõnikord viise, kuidas neid rakendada iteraatoritest endist sõltumatult.