Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет334/465
Дата09.01.2023
өлшемі3,66 Mb.
#60709
түріПрограмма
1   ...   330   331   332   333   334   335   336   337   ...   465
А ғымдық итераторлар
Келесі бөлімде қарастырылатын стандартты алгоритмдер енгізу/шығару 
ағымдарын тікелей қолдану мүмкіндігіне ие болуы үшін ағымдық итератор-
лар енгізілген. Ағымдар тізбектер түрінде бейнеленеді. Ағымдық итератор-
лар кластарының екі шаблоны анықталған, олар: кіріс ағымының итераторы 
istream_iterator
жəне шығыс ағымының итераторы 
ostream_iterator
.
24-1140


362
Кіріс ағымының итераторы өзі арналып құрылған ағымнан элементтерді 
оқиды, осыдан кейін оларды итератор үшін үйреншікті тəсілмен, яғни 
адрессіздендіру операциясы арқылы пайдалануға болады. Мысалы, 
temp
атты 
файлдан бүтін санды оқу үшін келесі программа үзіндісін қолдануға болады:
istream in("temp"); 
istream_iterator i(in); 
int buf = *i;
Кіріс ағымынан кезекті мəн инкремент операциясының орындалуы кезінде 
оқылады, мысалы:
++i;
int buf1 = *i;
Кіріс ағымының соңына жеткен кезде итератор енгізу операциясының 
соңы мəнін қабылдайды. Итератор конструкторында да келісім бойынша 
осы мəн болады, сондықтан файлдан мəлімет оқу циклін келесідей түрде 
ұйымдастыруға болады:
while ( i != istream_iterator () ) 
 
cout << *i++ << " ";
Кіріс ағымының итераторлары үшін теңдікке жəне теңсіздікке тексеру опе-
рациялары анықталған. Енгізу операциясының соңына тең барлық итератор-
лар да өзара тең болады. Енгізу операциясының соңына жетпеген (соңына тең 
емес) итераторларды олардың барлығы да бір ағым үшін құрылған жағдайда 
бір-бірімен салыстыруға болады. 
Кіріс ағымы итераторларының ерекшелігі олардың инкремент опера-
циясынан кейін теңдікті сақтамауында болып табылады, яғни 
i
== j
болса, 
++i == ++j
болуы міндетті емес. Сондықтан оларды тек бір рет қана орындала-
тын алгоритмдерде қолдануға ұсыныс беріледі. Егер алгоритмнің бірнеше рет 
орындалуы талап етілсе, онда жедел жадындағы мəліметтер құрылымдарын 
қолданған дұрысырақ болып саналады.


Достарыңызбен бөлісу:
1   ...   330   331   332   333   334   335   336   337   ...   465




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет