www.wikidata.uk-ua.nina.az
U Vikipediyi ye statti pro inshi znachennya cogo termina Iterator znachennya U komp yuternomu programuvanni iterator ce ob yekt yakij dozvolyaye programistu obhoditi elementi kolekciyi zokrema spisku 1 2 3 Rizni tipi iteratoriv chasto vzhe ye dostupnimi cherez interfejs kolekciyi en Hocha interfejs i semantika konkretnogo iteratora ye fiksovanimi iteratori chasto realizuyutsya v terminah struktur yaki lezhat v osnovi realizaciyi kolekciyi i chasto tisno pov yazani z kolekciyeyu shob zabezpechiti robochu semantiku iteratora Iterator vikonuye obhid a takozh nadaye dostup do elementiv danih u kolekciyi ale sam ne vikonuye iteraciyi Povedinka iteratora shozha na kursor bazi danih Iteratori vpershe z yavilisya v movi programuvannya CLU v 1974 roci 4 Zmist 1 Opis 1 1 Vnutrishni iteratori 1 2 Zovnishni iteratori ta shablon iteratora 1 2 1 Generatori 1 3 Neyavni iteratori 1 4 Potoki 1 5 Vidminnosti vid indeksaciyi 1 6 Klasifikaciya iteratoriv 1 6 1 Kategoriyi iteratoriv 1 6 2 Tipi iteratoriv 2 U movah programuvannya 2 1 Python 3 Div takozh 4 Primitki 5 PosilannyaOpis RedaguvatiVnutrishni iteratori Redaguvati Vnutrishni iteratori ce funkciyi vishogo poryadku chasto prijmayut anonimni funkciyi ale ne obov yazkovo taki yak map reduce tosho yaki realizuyut obhid kolekciyi zastosovuyuchi danu funkciyu do kozhnogo elementa po cherzi Prikladom mozhe buti funkciya map Python digits 0 1 2 3 4 5 6 7 8 9 squared digits map lambda x x 2 digits Iteraciya po comu iteratoru daye poslidovnist 0 1 4 9 16 81 Zovnishni iteratori ta shablon iteratora Redaguvati Zovnishnij iterator mozhna rozglyadati yak tip vkazivnika yakij vikonuye dvi osnovni operaciyi posilannya na odin okremij element u kolekciyi ob yektiv tak zvanij dostup do elementa i modifikaciya sebe takim sposobom shob vin vkazuvav na nastupnij element tak zvanij obhid elementiv 5 Takozh maye buti sposib stvoriti iterator shob vin vkazuvav na deyakij pershij element a takozh yakijs sposib viznachiti koli iterator vicherpaye vsi elementi v kolekciyi Zalezhno vid movi ta namiriv vikoristannya iteratori takozh mozhut zabezpechuvati dodatkovi operaciyi abo demonstruvati riznu povedinku Osnovna meta iteratora dozvoliti koristuvachevi obroblyati kozhen element kolekciyi pri comu izolyuyuchi koristuvacha vid vnutrishnoyi strukturi kolekciyi 2 Ce dozvolyaye kolekciyi zberigati elementi dovilnim sposobom ta dozvolyaye koristuvachevi rozglyadati yih tak nibi ce prosta poslidovnist abo spisok Klas iteratora zazvichaj rozroblyayetsya v tisnij koordinaciyi z vidpovidnim klasom kolekciyeyu Zazvichaj kolekciya nadaye metodi dlya stvorennya iteratoriv Lichilnik ciklu inodi takozh nazivayut iteratorom ciklu Odnak lichilnik cikliv zabezpechuye lishe funkcionalni mozhlivosti obhodu a ne funkciyi dostupu do elementu Generatori Redaguvati Odnim iz sposobiv realizaciyi iteratoriv ye vikoristannya obmezhenoyi formi spivprogrami vidomoyi yak generator Na vidminu vid pidprogrami spivprograma generatora mozhe nadavati yield znachennya pri vikliku dekilka raziv zamist togo shob povertati jogo lishe odin raz Bilshist iteratoriv prirodno virazhayutsya yak generatori ale oskilki generatori zberigayut svij lokalnij stan mizh viklikami voni osoblivo dobre pidhodyat dlya skladnih iteratoriv iz zberezhennyam stanu takih yak obhodi derev Isnuyut tonki vidminnosti u vikoristanni terminiv generator ta iterator yaki vidriznyayutsya zalezhno vid avtora ta movi 6 U Python generator ce konstruktor iteratora funkciya yaka povertaye iterator Nizhche navedeno priklad generatora Python yakij povertaye iterator dlya chisel Fibonachchi za dopomogoyu operatora yield Python def fibonacci limit a b 0 1 for in range limit yield a a b b a b for number in fibonacci 100 Generator stvoryuye iterator print number Neyavni iteratori Redaguvati Deyaki ob yektno oriyentovani movi taki yak C C piznishi versiyi Delphi piznishi versiyi Go Java piznishi versiyi Lua Perl Python Ruby zabezpechuyut vbudovanij en sposib iteraciyi elementiv ob yekta kolekciyi bez vvedennya yavnogo ob yekta iteratora Faktichnij ob yekt iterator mozhe isnuvati v realnosti ale yaksho vin isnuye vin ne vidobrazhayetsya u vihidnomu kodi movi 5 7 Neyavni iteratori chasto proyavlyayutsya operatorom foreach abo ekvivalentom napriklad u nastupnomu prikladi Python U Python iterator ce ob yekt yakij mozhna peretvoriti na iterator yakij potim iteruyetsya pid chas ciklu for ce robitsya neyavno for value in iterable print value Abo v inshih vipadkah voni mozhut buti stvoreni samim ob yektom kolekciyi yak u comu prikladi Ruby Cej stil iteraciyi inodi nazivayut vbudovanoyu iteraciyeyu oskilki jogo kod povnistyu vikonuyetsya v konteksti iterovanogo ob yekta yakij kontrolyuye vsi aspekti iteraciyi a programist nadaye lishe operaciyu dlya vikonannya na kozhnomu kroci vikoristovuyuchi anonimnu funkciyu iterable each do value puts value end Movi yaki pidtrimuyut spiskovi virazi abo podibni konstrukciyi takozh mozhut vikoristovuvati neyavni iteratori pid chas stvorennya spisku rezultativ yak u Python names person name for person in roster if person male Inodi neyavna prihovana priroda ye lishe chastkovoyu U movi C ye kilka shabloniv funkcij dlya neyavnoyi iteraciyi napriklad for each Ci funkciyi vse she vimagayut yavnih ob yektiv iteratora yak pochatkovogo vhodu ale nastupna iteraciya ne vidkrivaye ob yekt iteratora dlya koristuvacha Potoki Redaguvati Iteratori ye korisnoyu abstrakciyeyu vhidnih potokiv voni nadayut potencijno neskinchennij iterovanij ale ne obov yazkovo indeksovanij ob yekt Deyaki movi taki yak Perl i Python realizuyut potoki yak iteratori U Python iteratori ce ob yekti sho predstavlyayut potoki danih 8 Alternativni realizaciyi potoku vklyuchayut movi kerovani danimi en taki yak AWK i sed Vidminnosti vid indeksaciyi Redaguvati U procedurnih movah zazvichaj vikoristovuyut operator indeksu ta lichilnik ciklu dlya prohodzhennya vsih elementiv poslidovnosti takoyi yak masiv Hocha indeksuvannya takozh mozhe vikoristovuvatisya z deyakimi ob yektno oriyentovanimi kolekciyami vikoristannya iteratoriv mozhe mati deyaki perevagi 9 Cikli pidrahunku ne pidhodyat dlya vsih struktur danih zokrema dlya struktur danih bez dovilnogo dostupu abo z povilnim dovilnim dostupom takih yak spiski abo dereva Iteratori mozhut zabezpechiti poslidovnij sposib iteraciyi struktur danih usih tipiv i otzhe zrobiti kod bilsh chitabelnim pridatnim dlya povtornogo vikoristannya ta mensh chutlivim do zmin u strukturi danih Iterator mozhe nakladati dodatkovi obmezhennya na dostup napriklad garantuvati sho elementi ne mozhut buti propusheni abo sho ranishe vidvidanij element ne mozhe buti dostupnij drugij raz Iterator mozhe dozvoliti zminyuvati ob yekt kolekciya ne poshkodzhuyuchi iterator Napriklad yak tilki iterator vijshov za mezhi pershogo elementa mozhna bulo b vstaviti dodatkovi elementi na pochatok kolekciyi z peredbachuvanimi rezultatami Pri vikoristanni indeksaciyi ce problematichno zrobiti oskilki nomeri indeksiv povinni zminyuvatisya Zdatnist kolekciyi modifikuvatisya pid chas iteraciyi jogo elementiv stala neobhidnoyu v suchasnomu ob yektno oriyentovanomu programuvanni de vzayemozv yazki mizh ob yektami ta naslidkami operacij mozhut buti neochevidnimi Vikoristovuyuchi iterator vi ubezpecheni vid takih naslidkiv Odnak do cogo tverdzhennya varto stavitisya z nedoviroyu tomu sho chastishe za vse z mirkuvan efektivnosti realizaciya iteratora nastilki tisno priv yazana do kolekciyi sho mozhe pereshkodzhati modifikaciyi osnovnoyi kolekciyi shob ne poshkoditi sebe Dlya kolekcij yaki mozhut peremishuvati svoyi dani v pam yati yedinij sposib ne poshkoditi iterator kolekciya maye yakimos chinom vidstezhuvati vsi aktivni iteratori ta onovlyuvati yih na lotu Oskilki kilkist iteratoriv u pevnij moment chasu mozhe buti yak zavgodno velikoyu porivnyano z rozmirom zv yazanoyi kolekciyi yih odnochasne onovlennya rizko pogirshit garantiyu skladnosti operacij kolekciyi Alternativnim sposobom zberezhennya kilkosti onovlen priv yazanih do rozmiru kolekciyi bulo b vikoristannya svogo rodu mehanizmu ruchki tobto naboru nepryamih pokazhchikiv na elementi kolekciyi yaki potribno onovlyuvati razom iz kolekciyeyu i dozvoliti iteratoram vkazuvati na ci nepryami pokazhchiki zamist togo shob vkazati bezposeredno na elementi danih Ale takij pidhid negativno vpline na produktivnist iteratora oskilki dlya dostupu do faktichnogo elementa danih vin povinen vikoristovuvati podvijnij vkazivnik Zazvichaj ce nebazhano tomu sho bagato algoritmiv sho vikoristovuyut iteratori viklikayut operaciyu dostupu do danih iteratoriv chastishe nizh poperednij metod Tomu osoblivo vazhlivo mati iteratori z duzhe efektivnim dostupom do danih Zagalom ce zavzhdi kompromis mizh bezpekoyu iteratori zalishayutsya zavzhdi robochimi ta efektivnistyu U bilshosti vipadkiv dodatkova bezpeka ne vartuye tiyeyi cini efektivnosti yaku potribno za neyi zaplatiti Vikoristannya alternativnoyi kolekciyi napriklad odnozv yazanogo spisku zamist vektora bulo b krashim viborom globalno efektivnishim yaksho potribna stabilnist iteratoriv Klasifikaciya iteratoriv Redaguvati Kategoriyi iteratoriv Redaguvati Iteratori mozhna klasifikuvati vidpovidno do yihnoyi funkcionalnosti Os nepovnij spisok kategorij iteratoriv 10 11 Kategoriya MovaBidirectional iterator C Forward iterator C Input iterator C Output iterator C Random access iterator C Trivial iterator C starij STL 12 Tipi iteratoriv Redaguvati Rizni movi abo biblioteki sho vikoristovuyutsya z cimi movami viznachayut tipi iteratoriv Deyaki z nih 13 Tip MovaArray iterator PHP R 14 Caching iterator PHPConstant iterator C 15 PHPDirectory iterator PHP PythonFilter iterator PHP RLimit iterator PHPList iterator Java 7 RRecursive array iterator PHPXML iterator PHPU movah programuvannya RedaguvatiPython Redaguvati Iteratori v Python ye fundamentalnoyu chastinoyu movi i v bagatoh vipadkah zalishayutsya nepomichenimi oskilki voni neyavno vikoristovuyutsya v operatori for foreach u spiskah i u virazah generatora Usi standartni vbudovani tipi kolekcij en Python pidtrimuyut iteraciyu a takozh bagato klasiv yaki ye chastinoyu standartnoyi biblioteki U nastupnomu prikladi pokazano tipovu neyavnu iteraciyu po poslidovnosti for value in sequence print value Slovniki Python forma asociativnogo masivu takozh mozhna bezposeredno perebirati koli povertayutsya klyuchi slovnika abo metod items slovnika mozhna povtoriti de vin daye vidpovidni pari klyuch znachennya yak kortezh for key in dictionary value dictionary key print key value for key value in dictionary items print key value Odnak iteratori mozhna vikoristovuvati ta viznachati yavno Dlya bud yakogo iterovanogo tipu poslidovnosti abo klasu vbudovana funkciya iter vikoristovuyetsya dlya stvorennya ob yekta iteratora Potim ob yekt iteratora mozhna povtoriti za dopomogoyu funkciyi next yaka vikoristovuye vnutrishnij metod next yakij povertaye nastupnij element u kolekciyi Poperednye tverdzhennya stosuyetsya Python 3 x U Python 2 x vikoristovuyetsya ekvivalentnij metod next Vinyatok StopIteration bude viklikano koli bilshe ne zalishitsya elementiv U nastupnomu prikladi pokazano ekvivalentnu iteraciyu v poslidovnosti z vikoristannyam yavnih iteratoriv it iter sequence while True try value it next in Python 2 x value next it in Python 3 x except StopIteration break print value Bud yakij viznachenij koristuvachem klas mozhe pidtrimuvati standartnu iteraciyu neyavnu abo yavnu shlyahom viznachennya metodu iter yakij povertaye ob yekt iteratora Potim ob yekt iterator povinen viznachiti metod next yakij povertaye nastupnij element Generatori Python realizuyut cej protokol iteraciyi Div takozh RedaguvatiIteratee en u yakomu zamist togo shob rozrobnik povtorno viklikav iterator dlya otrimannya novih znachen iteratee viklikayetsya neodnorazovo dlya obrobki novih fragmentiv danih priklad inversiyi keruvannya Shabloni proyektuvannya programnogo zabezpechennya Iteraciya Shablon iteratora Diapazon Shablon vidviduvacha VkazivnikPrimitki Redaguvati Gatcomb Joshua Understanding and Using Iterators Perl com Arhiv originalu za 6 serpnya 2012 Procitovano 8 serpnya 2012 A user defined iterator usually takes the form of a code reference that when executed calculates the next item in a list and returns it When the iterator reaches the end of the list it returns an agreed upon value a b Watt Stephen M A Technique for Generic Iteration and Its Optimization PDF The University of Western Ontario Department of Computer Science Arhiv originalu za 6 serpnya 2012 Procitovano 8 serpnya 2012 Iterators were introduced as constructs to allow looping over abstract data structures without revealing their internal representation Alex Allain STL Iterators Cprogramming com Your resource for C and C Procitovano 8 serpnya 2012 You can think of an iterator as pointing to an item that is part of a larger container of items Liskov Barbara 1992 A history of CLU The second ACM SIGPLAN conference on History of programming languages a b Difference between an external iterator and an internal iterator CareerRide COM 3 kvitnya 2009 Arhiv originalu za 19 veresnya 2012 Procitovano 8 serpnya 2012 An internal iterator is implemented by the member functions of the class which has the iteration logic An external iterator is implemented by a separate class which can be attached to the object which has iteration logic The advantage of external iterator is that many iterators can be made active simultaneously on the existing or same object Watt Stephen M A Technique for Generic Iteration and Its Optimization PDF The University of Western Ontario Department of Computer Science Arhiv originalu za 6 serpnya 2012 Procitovano 8 serpnya 2012 Some authors use the term iterator and others the term generator Some make subtle distinctions between the two a b Freeman Eric Freeman Elisabeth Kathy Sierra Bert Bates 2004 U Hendrickson Mike Loukides Mike Head First Design Patterns paperback 1 O REILLY s 338 ISBN 978 0 596 00712 6 Procitovano 9 serpnya 2012 Glossary Python 3 8 4 documentation Procitovano 15 lipnya 2020 Vecerina Ivan 1 lyutogo 2006 index vs iterator BYTES Arhiv originalu za 9 serpnya 2012 Procitovano 8 serpnya 2012 An index only can be used for containers that efficiently support random access i e direct access to an element at a given position An iterator is a more general concept Iterators offer efficient traversal of linked lists files and a number of other data structures It often leads to the generation of more efficient code Kevin Waterson C Iteratoren Iterator Kategorien nim cppreference com Procitovano 9 serpnya 2012 Kevin Waterson Iterators Concepts sgi Procitovano 9 serpnya 2012 larsmans 6 bereznya 2011 Types of iterator Output vs input vs forward vs random access iterator stackoverflow Arhiv originalu za 8 serpnya 2012 Procitovano 9 serpnya 2012 Kevin Waterson Introduction to SPL Introduction to Standard PHP Library SPL PHPRO ORG Procitovano 9 serpnya 2012 Collier Andrew Iterators in R Arhiv originalu za 18 zhovtnya 2018 Procitovano 16 listopada 2013 concurrent unordered set Template Class Intel Threading Building Blocks for Open Source Arhiv originalu za 1 travnya 2015 Procitovano 9 serpnya 2012 The iterator types iterator and const iterator are of the forward iterator category Posilannya RedaguvatiJava s Iterator Iterable and ListIterator Explained angl NET interface angl Stattya Understanding and Using Iterators Dzhoshua Gatkomba angl Stattya A Technique for Generic Iteration and Its Optimization Stivenna Uotta en angl Iterators angl Boost C Iterator Library angl Java interface angl PHP Object Iteration angl STL Iterators angl What are iterators Reference description angl Otrimano z https uk wikipedia org w index php title Iterator amp oldid 39211933