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



Download 2 Mb.
bet177/232
Sana29.03.2022
Hajmi2 Mb.
#516205
TuriЗадача
1   ...   173   174   175   176   177   178   179   180   ...   232
Bog'liq
Т. А. Павловская C C . Программирование на языке высокого уровня

Двусторонние очереди (deque)


Äâóñòîðîííяя î÷åðåäü — ýòî ïîñëåäîâaòåëüíûé êîíòåéíåð, êîòîðûé, íaðяäó ñ âåê- òîðîì, ïîääåðæèâaåò ïðîèçâîëüíûé äîñòóï ê ýëåìåíòaì è îáåñïå÷èâaåò âñòaâêó è óäaëåíèå èç îáîèõ êîíöîâ î÷åðåäè ça ïîñòîяííîå âðåìя. Òå æå îïåðaöèè ñ ýëåìåí- òaìè âíóòðè î÷åðåäè çaíèìaþò âðåìя, ïðîïîðöèîíaëüíîå êîëè÷åñòâó ïåðåìåùaå- ìûõ ýëåìåíòîâ. Ðañïðåäåëåíèå ïaìяòè âûïîëíяåòñя aâòîìaòè÷åñêè.
Ðaññìîòðèì ñõåìó îðãaíèçaöèè î÷åðåäè (ðèñ. 12.1). Äëя òîãî ÷òîáû îáåñïå÷èòü ïðîèçâîëüíûé äîñòóï ê ýëåìåíòaì ça ïîñòîяííîå âðåìя, î÷åðåäü ðaçáèòa ía áëî- êè, äîñòóï ê êaæäîìó èç êîòîðûõ îñóùåñòâëяåòñя ÷åðåç óêaçaòåëü. Ía ðèñóíêå ça- êðaøåííûå îáëañòè ñîîòâåòñòâóþò çaíяòûì ýëåìåíòaì î÷åðåäè. Åñëè ïðè äîáaâ- ëåíèè â ía÷aëî èëè â êîíåö áëîê îêaçûâaåòñя çaïîëíåííûì, âûäåëяåòñя ïaìяòü ïîä î÷åðåäíîé áëîê (íaïðèìåð, ïîñëå çaïîëíåíèя áëîêa 4 áóäåò âûäåëåía ïaìяòü ïîä áëîê 5, a ïîñëå çaïîëíåíèя áëîêa 2 — ïîä áëîê 1). Ïðè çaïîëíåíèè êðaéíåãî èç áëîêîâ ïðîèñõîäèò ïåðåðañïðåäåëåíèå ïaìяòè ïîä ìaññèâ óêaçaòåëåé òaê, ÷òî- áû èñïîëüçîâaëèñü òîëüêî ñðåäíèå ýëåìåíòû. Ýòî íå çaíèìaåò ìíîãî âðåìåíè.

Òaêèì îáðaçîì, äîñòóï ê ýëåìåíòaì î÷åðåäè îñóùåñòâëяåòñя ça ïîñòîяííîå âðå- ìя, õîòя îíî è íåñêîëüêî áîëüøå, ÷åì äëя âåêòîða.




0

1


2

3


4

5


6


Рис. 12.1. Организация двусторонней очереди

Äëя ñîçäaíèя äâóñòîðîííåé î÷åðåäè ìîæíî âîñïîëüçîâaòüñя ñëåäóþùèìè nîíñò- ðónòîðaìè (ïðèâåäåía óïðîùåííaя çaïèñü), aíaëîãè÷íûìè êîíñòðóêòîðaì âåê- òîða:


expliCit deque(); // 1
expliCit deque(size_type n, COnst T& value = T()); // 2 template // 3
deque(InputIter first, InputIter last);
deque(COnst veCtOr& x); // 4
Êîíñòðóêòîð 1 яâëяåòñя êîíñòðóêòîðîì ïî óìîë÷aíèþ.
Êîíñòðóêòîð 2 ñîçäaåò î÷åðåäü äëèíîé n è çaïîëíяåò åå îäèíaêîâûìè ýëåìåíòa- ìè — êîïèяìè value.
Êîíñòðóêòîð 3 ñîçäaåò î÷åðåäü ïóòåì êîïèðîâaíèя óêaçaííîãî ñ ïîìîùüþ èòåða- òîðîâ äèaïaçîía ýëåìåíòîâ. Òèï èòåðaòîðîâ äîëæåí áûòü «äëя ÷òåíèя».
Êîíñòðóêòîð 4 яâëяåòñя êîíñòðóêòîðîì êîïèðîâaíèя. Ïðèìåðû êîíñòðóêòîðîâ:
// Cîçäaåòñя î÷åðåäü èç 10 ðaâíûõ åäèíèöå ýëåìåíòîâ: deque d2 (10, 1);
// Cîçäaåòñя î÷åðåäü, ðaâíaя î÷åðåäè v1:
deque d4 (v1);
// Cîçäaåòñя î÷åðåäü èç äâóõ ýëåìåíòîâ, ðaâíûõ ïåðâûì äâóì
// ýëåìåíòaì âåêòîða v1 èç ïðåäûäóùåãî ðaçäåëa: deque d3 (v1.begin(), v1.begin() + 2);
// Cîçäaåòñя î÷åðåäü èç 10 îáúåêòîâ êëañña mOnstr (ñì. ñ. 183)
// (ðaáîòaåò êîíñòðóêòîð ïî óìîë÷aíèþ):
deque m1 (10);
// Cîçäaåòñя î÷åðåäü èç 5 îáúåêòîâ êëañña mOnstr ñ çaäaííûì èìåíåì
// (ðaáîòaåò êîíñòðóêòîð ñ ïaðaìåòðîì Char*): deque m2 (5, mOnstr("Âañя â î÷åðåäè"));

 øaáëîíå deque îïðåäåëåíû îïåðaöèя ïðèñâaèâaíèя, ôóíêöèя nîïèðîâaíèя, èòåðaòîðû, îïåðaöèè ñðaâíåíèя, îïåðaöèè è ôóíêöèè äîñòóïa n ýëåìåíòaì è èçìåíåíèя îáúånòîâ, 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÷åíèя ññû- ëîê ía ýëåìåíòû î÷åðåäè ñîõðaíяþòñя. Ïîñëå îïåðaöèé âûáîðêè èç ëþáîãî êîí- öa ñòaíîâяòñя íåäåéñòâèòåëüíûìè òîëüêî çía÷åíèя èòåðaòîðîâ è ññûëîê, ñâяçaí- íûõ ñ ýòèìè ýëåìåíòaìè.
Êðîìå ïåðå÷èñëåííûõ, îïðåäåëåíû ôóíêöèè äîáaâëåíèя è âûáîðnè èç ía÷aëa
î÷åðåäè:
vOid push_frOnt(COnst T& value); vOid pOp_frOnt();
Ïðè âûáîðêå ýëåìåíò óäaëяåòñя èç î÷åðåäè.
Äëя î÷åðåäè íå îïðåäåëåíû ôóíêöèè CapaCity è reserve, íî åñòü ôóíêöèè resize è
size.
Ê î÷åðåäяì ìîæíî ïðèìåíяòü aëãîðèòìû ñòaíäaðòíîé áèáëèîòåêè, îïèñaííûå â ãëaâå 14 «Àëãîðèòìû» ía ñ. 343.



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   173   174   175   176   177   178   179   180   ...   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