ñëîâaðå (map), â îòëè÷èå îò ñëîâaðя ñ äóáëèêaòaìè (multimap), âñå êëþ÷è äîëæ- íû áûòü óíèêaëüíû. Ýëåìåíòû â ñëîâaðå õðaíяòñя â îòñîðòèðîâaííîì âèäå, ïî- ýòîìó äëя êëþ÷åé äîëæíî áûòü îïðåäåëåíî îòíîøåíèå «ìåíüøå». Øaáëîí ñëî- âaðя ñîäåðæèò òðè ïaðaìåòða: òèï êëþ÷a, òèï ýëåìåíòa è òèï ôóíêöèîíaëüíîãî îáúåêòa, îïðåäåëяþùåãî îòíîøåíèå «ìåíüøå» (ôóíêöèîíaëüíûå îáúåêòû ðañ- ñìaòðèâaëèñü ía ñ. 195):
template > Class map{
publiC:
typedef pair value_type; expliCit map(COnst COmpare& COmp = COmpare()); template
map(InputIter first, InputIter last, COnst COmpare& COmp = COmpare());
map(COnst map & x);
…
};
Êaê âèäíî èç ïðèâåäåííîãî îïèñaíèя (îíî äaíî ñ ñîêðaùåíèяìè), òèï ýëåìåíòîâ ñëîâaðя value_type îïðåäåëяåòñя êaê ïaða ýëåìåíòîâ òèïa Key è T.
Ïåðâûé nîíñòðó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ðя îïðåäåëåíû äåñòðónòîð, îïåðaöèя ïðè- ñâaèâaíèя è îïåðaöèè îòíîøåíèя. Èòåðaòîðû ñëîâaðя ïåðå÷èñëåíû â òaáë. 12.
Äëя äîñòóïa ê ýëåìåíòaì ïî êëþ÷ó îïðåäåëåía îïåðaöèя [ ]: T& OperatOr[](COnst Key & x);
C ïîìîùüþ ýòîé îïåðaöèè ìîæíî íå òîëüêî ïîëó÷aòü çía÷åíèя ýëåìåíòîâ, íî è äîáaâëяòü â ñëîâaðü íîâûå. Íå áóäó îòñòóïaòü îò òðaäèöèé è â êa÷åñòâå ïðèìåða ñëîâaðя ïðèâåäó òåëåôîííóþ êíèãó, êëþ÷îì â êîòîðîé ñëóæèò ôaìèëèя, a ýëå- ìåíòîì — íîìåð òåëåôîía:
inClude inClude inClude inClude
Do'stlaringiz bilan baham: |