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
болуы міндетті емес. Сондықтан оларды тек бір рет қана орындала-
тын алгоритмдерде қолдануға ұсыныс беріледі. Егер алгоритмнің бірнеше рет
орындалуы талап етілсе, онда жедел жадындағы мəліметтер құрылымдарын
қолданған дұрысырақ болып саналады.
Достарыңызбен бөлісу: