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


Арифметические функциональные объекты



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

Арифметические функциональные объекты


 ñòaíäaðòíîé áèáëèîòåêå îïðåäåëåíû øaáëîíû ôóíêöèîíaëüíûõ îáúåêòîâ äëя âñåõ aðèôìåòè÷åñêèõ îïåðaöèé, îïðåäåëåííûõ â яçûêå C++.
Таблица 13.2. Арифметические функциональные объекты



Имя

Тип

Результат

plus

áèíaðíûé

x + y

minus

áèíaðíûé

x – y

multiplies

áèíaðíûé

x * y

divides

áèíaðíûé

x / y

mOdulus

áèíaðíûé

x % y

negate

óíaðíûé

– x

Íèæå ïðèâåäåí øaáëîí îáúåêòa plus (îñòaëüíûå îáúåêòû îïèñaíû aíaëîãè÷íûì îáðaçîì):
template struCt plus : binary_funCtiOn{ T OperatOr()(COnst T& x, COnst T& y) COnst{
returnx+ y;
}
};

Ïîñêîëüêó ôóíêöèîíaëüíûå îáúåêòû èñïîëüçóþòñя áîëüøåé ÷añòüþ âìåñòå ñ aë- ãîðèòìaìè ñòaíäaðòíîé áèáëèîòåêè, ïðèìåðû ïðèìåíåíèя aðèôìåòè÷åñêèõ ôóíêöèîíaëüíûõ îáúåêòîâ ïðèâåäåíû â ðaçäåëå «Àëãîðèòìû» ía ñ. 356, 370.




Предикаты


 ñòaíäaðòíîé áèáëèîòåêå îïðåäåëåíû øaáëîíû ôóíêöèîíaëüíûõ îáúåêòîâ äëя îïåðaöèé ñðaâíåíèя è ëîãè÷åñêèõ îïåðaöèé, îïðåäåëåííûõ â яçûêå C++. Îíè âîçâðaùaþò çía÷åíèå òèïa bOOl, òî åñòü яâëяþòñя ïðåäèêaòaìè.


Таблица 13.3. Предикаты стандартной библиотеки



Имя

Тип

Результат

equal_tO

áèíaðíûé

x == y

nOt_equal_tO

áèíaðíûé

x != y

greater

áèíaðíûé

x > y

less

áèíaðíûé

x < y

greater_equal

áèíaðíûé

x >= y

less_equal

áèíaðíûé

x <= y

lOgiCal_and

áèíaðíûé

x && y

lOgiCal_Or

áèíaðíûé

x || y

lOgiCal_nOt

óíaðíûé

! x

Íèæå ïðèâåäåí øaáëîí îáúåêòa equal_tO (îñòaëüíûå îáúåêòû îïèñaíû aíaëîãè÷- íûì îáðaçîì):
template struCt equal_tO : binary_funCtiOn{
bOOl OperatOr()(COnst T& x, COnst T& y) COnst{ return x == y;
}
};
Ïðîãðaììèñò ìîæåò îïèñaòü ñîáñòâåííûå ïðåäèêaòû äëя îïðåäåëåíèя êðèòåðèåâ ñðaâíåíèя îáúåêòîâ. Ýòî íåîáõîäèìî, êîãäa êîíòåéíåð ñîñòîèò èç ýëåìåíòîâ ïîëüçîâaòåëüñêîãî òèïa. Íaïðèìåð, äëя îïèñaííîãî ía ñ. 183 êëañña mOnstr ïðåäè- êaò, ñðaâíèâaþùèé äâa îáúåêòa ïî çía÷åíèþ ïîëя ammO, èìååò âèä:
struCt mOnstr_less_ammO:
publiC binary_funCtiOn{ bOOl OperatOr ()(mOnstr & m1, mOnstr & m2){
return m1.get_ammO() < m2.get_ammO();
}
};
Ïðèìåðû ïðèìåíåíèя ïðåäèêaòîâ ïðèâåäåíû ía ñ. 338, 360, 363.


Отрицатели


Îòðèöaòåëè nOt1 è nOt2 ïðèìåíяþòñя äëя ïîëó÷åíèя ïðîòèâîïîëîæíîãî óíaðíî- ãî è áèíaðíîãî ïðåäèêaòa ñîîòâåòñòâåííî. Èñïîëüçîâaòü îòðèöaòåëè î÷åíü ïðî- ñòî. Íaïðèìåð, äëя òîãî ÷òîáû ïîëó÷èòü èíâåðñèþ ïðåäèêaòa less(), íóæíî çaïèñaòü âûðaæåíèå nOt2(less()). Îíî ýêâèâaëåíòíî greater_equal.
Îòðèöaòåëè ïðèìåíяþòñя äëя èíâåðòèðîâaíèя ïðåäèêaòîâ, çaäaííûõ ïîëüçîâa- òåëåì, ïîñêîëüêó äëя ñòaíäaðòíûõ ïðåäèêaòîâ áèáëèîòåêa ñîäåðæèò ñîîòâåòñò- âóþùèå èì ïðîòèâîïîëîæíûå îáúåêòû.
Ðaññìîòðèì ðåaëèçaöèþ îòðèöaòåëåé.  áèáëèîòåêå îïèñaíû ôóíêöèîíaëüíûå îáúåêòû unary_negate è binary_negate, яâëяþùèåñя ïîòîìêaìè unary_funCtiOn è binary_funCtiOn ñîîòâåòñòâåííî. Ýòè êëaññû ïðèíèìaþò â êa÷åñòâå ïaðaìåòða êîíñòðóêòîða îáúåêò, яâëяþùèéñя ïðåäèêaòîì òðåáóåìîãî òèïa:
template
Class unary_negate: publiC
unary_funCtiOn{ publiC:
expliCit unary_negate(COnst PrediCate& pred); bOOl OperatOr()
(COnst typename PrediCate::argument_type& x) COnst;
};
Îïåðaöèя () âîçâðaùaåò èíâåðñèþ ïðåäèêaòa. nOt1 è nOt2 îïðåäåëåíû êaê øaáëî- íû ôóíêöèé, ïðèíèìaþùèõ ïðåäèêaò è âîçâðaùaþùèõ ôóíêöèîíaëüíûé îáúåêò:
template
unary_negate
nOt1(COnst PrediCate& pred); template
binary_negate
nOt2(COnst PrediCate& pred);



Download 2 Mb.

Do'stlaringiz bilan baham:
1   ...   187   188   189   190   191   192   193   194   ...   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