Задача этой книги дать краткое и четкое изложение языка С++ в соответствии со стандар том iso/iec 14882. Она предназначена для студентов, изучающих язык «с нуля»



Download 2 Mb.
bet189/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   185   186   187   188   189   190   191   192   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Итераторы вставки


Èòåðaòîðû âñòaâêè òaê æå, êaê è îáðaòíûå, яâëяþòñя aäaïòåðaìè èòåðaòîðîâ. Îíè ïðåäíaçía÷åíû äëя äîáaâëåíèя íîâûõ ýëåìåíòîâ â ía÷aëî, êîíåö èëè ïðîèç- âîëüíîå ìåñòî êîíòåéíåða.  ñòaíäaðòíîé áèáëèîòåêå îïðåäåëåíî òðè øaáëîía êëaññîâ èòåðaòîðîâ âñòaâêè, ïîñòðîåííûõ ía îñíîâå âûõîäíûõ èòåðaòîðîâ: baCk_insert_iteratOr, frOnt_insert_iteratOr è insert_iteratOr.

Êðîìå òîãî, îïðåäåëåíû òðè ôóíêöèè âñòaâêè:


template baCk_insert_iteratOr baCk_inserter(C& x);
template frOnt_insert_iteratOr frOnt_inserter(C& x);
template insert_iteratOr inserter(C& x, Iter i);
Çäåñü C — êîíòåéíåð, â êîòîðûé òðåáóåòñя âñòaâèòü ýëåìåíòû. Ôóíêöèя baCk_inserter âñòaâëяåò ýëåìåíòû â êîíåö êîíòåéíåða, frOnt_inserter — â ía÷aëî, a inserter — ïåðåä ýëåìåíòîì, ía êîòîðûé ññûëaåòñя åå aðãóìåíò-èòåðaòîð. Ýòè ôóíêöèè âîçâðaùaþò èòåðaòîðû ñîîòâåòñòâóþùåãî òèïa è ÷añòî èñïîëüçóþòñя â êa÷åñòâå aðãóìåíòîâ ñòaíäaðòíûõ aëãîðèòìîâ (ñì. 355), ãäå îïðåäåëяþò ðåæèì ðaáîòû — âñòaâêa èëè çaìåía ýëåìåíòîâ êîíòåéíåða.


Потоковые итераторы


Ïîòîêîâûå èòåðaòîðû ââåäåíû äëя òîãî ÷òîáû ñòaíäaðòíûå aëãîðèòìû, êîòîðûå ðaññìaòðèâaþòñя â ñëåäóþùåì ðaçäåëå, ìîãëè íåïîñðåäñòâåííî èñïîëüçîâaòü ïî- òîêè ââîäa/âûâîäa. Ïîòîêè ïðåäñòaâëяþòñя â âèäå ïîñëåäîâaòåëüíîñòåé. Îïðå- äåëåíî äâa øaáëîía êëaññîâ ïîòîêîâûõ èòåðaòîðîâ: èòåðaòîð âõîäíîãî ïîòîêa istream_iteratOr è èòåðaòîð âûõîäíîãî ïîòîêa Ostream_iteratOr.
Èòåðaòîð âõîäíîãî ïîòîna ÷èòaåò ýëåìåíòû èç ïîòîêa, äëя êîòîðîãî îí áûë ñîç- äaí, ïîñëå ÷åãî ê íèì ìîæíî îáðaùaòüñя îáû÷íûì äëя èòåðaòîða îáðaçîì, òî åñòü
÷åðåç îïåðaöèþ ðaçaäðåñaöèè. Íaïðèìåð, äëя ÷òåíèя öåëîãî ÷èñëa èç ôaéëa ñ èìåíåì temp ìîæíî èñïîëüçîâaòü ñëåäóþùèé ôðaãìåíò:
istream in("temp"); istream_iteratOr i(in); int buf = *i;
Î÷åðåäíîå çía÷åíèå èç âõîäíîãî ïîòîêa ñ÷èòûâaåòñя ïðè âûïîëíåíèè îïåðaöèè èíêðåìåíòa, íaïðèìåð:
++i;
int buf1 = *i;
Ïðè äîñòèæåíèè êîíöa âõîäíîãî ïîòîêa èòåðaòîð ïðèíèìaåò çía÷åíèå êîíöa ââîäa. Ýòî æå çía÷åíèå èìååò êîíñòðóêòîð èòåðaòîða ïî óìîë÷aíèþ, ïîýòîìó öèêë ÷òåíèя èç ôaéëa ìîæíî îðãaíèçîâaòü ñëåäóþùèì îáðaçîì:
while(i != istream_iteratOr () ) COut << *i++ << " ";
Äëя èòåðaòîðîâ âõîäíîãî ïîòîêa îïðåäåëåíû îïåðaöèè ñðaâíåíèя ía ðaâåíñòâî è íåðaâåíñòâî. Âñå èòåðaòîðû, ðaâíûå êîíöó ââîäa, ðaâíû ìåæäó ñîáîé. Cðaâíè- âaòü íå ðaâíûå êîíöó ââîäa èòåðaòîðû ìîæíî ïðè óñëîâèè, ÷òî îíè ñêîíñòðóèðî- âaíû äëя îäíîãî è òîãî æå ïîòîêa.
Îñîáåííîñòü èòåðaòîðîâ âõîäíîãî ïîòîêa çaêëþ÷aåòñя â òîì, ÷òî îíè íå ñîõðaíя- þò ðaâåíñòâî ïîñëå èíêðåìåíòaöèè, òî åñòü åñëè i == j, òî íå îáяçaòåëüíî, ÷òî
++i == ++j. Ïîýòîìó èõ ðåêîìåíäóåòñя èñïîëüçîâaòü òîëüêî â îäíîïðîõîäíûõ aë-

ãîðèòìaõ. Åñëè aëãîðèòì òðåáóåò íåñêîëüêèõ ïðîõîäîâ, ïðåäïî÷òèòåëüíåå èñ- ïîëüçîâaòü ñòðóêòóðû äaííûõ â îïåðaòèâíîé ïaìяòè.



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   185   186   187   188   189   190   191   192   ...   232




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish