Äëя ñîçäaíèя âåêòîða ìîæíî âîñïîëüçîâaòüñя ñëåäóþùèìè nîíñòðónòîðaìè
(ïðèâåäåía óïðîùåííaя çaïèñü):
expliCit veCtOr(); // 1
expliCit veCtOr(size_type n, COnst T& value = T()); // 2 template // 3
veCtOr(InputIter first, InputIter last);
veCtOr(COnst veCtOr& x); // 4
Êëþ÷åâîå ñëîâî expliCit èñïîëüçóåòñя äëя òîãî, ÷òîáû ïðè ñîçäaíèè îáúåêòa ça- ïðåòèòü âûïîëíяåìîå íåяâíî ïðåîáðaçîâaíèå ïðè ïðèñâaèâaíèè çía÷åíèя äðóãî- ãî òèïa (ñì. òaêæå ñ. 197).
Êîíñòðóêòîð 1 яâëяåòñя êîíñòðóêòîðîì ïî óìîë÷aíèþ.
Êîíñòðóêòîð 2 ñîçäaåò âåêòîð äëèíîé n è çaïîëíяåò åãî îäèíaêîâûìè ýëåìåíòa- ìè — êîïèяìè value.
Ïîñêîëüêó èçìåíåíèå ðaçìåða âåêòîða îáõîäèòñя äîðîãî, ïðè åãî ñîçäaíèè çaäa- âaòü ía÷aëüíûé ðaçìåð âåñüìa ïîëåçíî. Ïðè ýòîì äëя âñòðîåííûõ òèïîâ âûïîë- íяåòñя èíèöèaëèçaöèя êaæäîãî ýëåìåíòa çía÷åíèåì value. Åñëè îíî íå óê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íèя.
Êîíñòðóêòîð 3 ñîçäaåò âåêòîð ïóòåì êîïèðîâaíèя óêaçaííîãî ñ ïîìîùüþ èòåða- òîðîâ äèaïaçîía ýëåìåíòîâ. Òèï èòåðaòîðîâ äîëæåí áûòü «äëя ÷òåíèя».
Êîíñòðóêòîð 4 яâëяåòñя êîíñòðóêòîðîì êîïèðîâaíèя. Ïðèìåðû êîíñòðóêòîðîâ:
// Cîçäaåòñя âåêòîð èç 10 ðaâíûõ åäèíèöå ýëåìåíòîâ:
veCtOr v2 (10, 1);
// Cîçäaåòñя âåêòîð, ðaâíûé âåêòîðó v1:
veCtOr v4 (v1);
// Cîçäaåòñя âåêòîð èç äâóõ ýëåìåíòîâ, ðaâíûõ ïåðâûì äâóì ýëåìåíòaì v1: veCtOr v3 (v1.begin(), v1.begin() + 2);
// Cîçäaåòñя âåêòîð èç 10 îáúåêòîâ êëañña mOnstr (ñì. ñ. 183)
// (ðaáîòaåò êîíñòðóêòîð ïî óìîë÷aíèþ):
veCtOr m1 (10);
// Cîçäaåòñя âåêòîð èç 5 îáúåêòîâ êëañña mOnstr ñ çaäaííûì èìåíåì
// (ðaáîòaåò êîíñòðóêòîð ñ ïaðaìåòðîì Char*):
veCtOr m2 (5, mOnstr("Âañя"));
 øaáëîíå veCtOr îïðåäåëåíû îïåðaöèя ïðèñâaèâaíèя è ôóíêöèя nîïèðîâaíèя:
veCtOr& OperatOr=(COnst veCtOr& x); vOid assign(size_type n, COnst T& value); template
vOid assign(InputIter first, InputIter last);
Çäåñü ÷åðåç Ò îáîçía÷åí òèï ýëåìåíòîâ âåêòîða. Âåêòîða ìîæíî ïðèñâaèâaòü äðóã äðóãó òî÷íî òaê æå, êaê ñòaíäaðòíûå òèïû äaííûõ èëè ñòðîêè. Ïîñëå ïðèñâaèâa- íèя ðaçìåð âåêòîða ñòaíîâèòñя ðaâíûì íîâîìó çía÷åíèþ, âñå ñòaðûå ýëåìåíòû óäaëяþòñя.
Ôóíêöèя assign â ïåðâîé ôîðìå aíaëîãè÷ía ïî äåéñòâèþ êîíñòðóêòîðó 2, íî ïðè- ìåíяåòñя ê ñóùåñòâóþùåìó îáúåêòó. Ôóíêöèя assign âî âòîðîé ôîðìå ïðåä- íaçía÷åía äëя ïðèñâaèâaíèя ýëåìåíòaì âûçûâaþùåãî âåêòîða çía÷åíèé èç äèa- ïaçîía, îïðåäåëяåìîãî èòåðaòîðaìè first è last, aíaëîãè÷íî êîíñòðóêòîðó 3, íaïðèìåð:
veCtOr v1, v2;
// Ïåðâûì 10 ýëåìåíòaì âåêòîða v1 ïðèñâaèâaåòñя çía÷åíèå 1: v1.assign(10,1);
// Ïåðâûì 3 ýëåìåíòaì âåêòîða v2 ïðèñâaèâaþòñя çía÷åíèя v2[5], v2[6], v2[7]: v2.assign(v2.begin() + 5, v2.begin() + 8);
Do'stlaringiz bilan baham: |