«Functional (C++)»–ի խմբագրումների տարբերություն

Content deleted Content added
No edit summary
Տող 195.
 
== Ֆունկցիոնալ օբյեկտներ ==
Նախորոք որոշված հիմնական հոդվածների համար նախատեսված ֆունկցիոնալ օբյեկտների հավաքածուն, կաղապարների ստանդարտ գրադարանի անբաժան մասն էր կազմում<ref name="Stepanov95" />։ Նրանց մեջ մտնում էին թվաբանական գոծողություններ (<tt>+-*/%</tt>), հիմնական [[Տրամաբանական գործողություն|տրամաբանական գործողությունները]] (<tt>&&, ||, !</tt>) և համեմատման գործողությունները (<tt>==, !=, >, <, >=, <=</tt>)։ Տրամաբանական և համեմատության գործողությունները համարվում են հաստատուններ և վերադարձնում են [[Տրամաբանական տեսակ|բուլյան տեսակը]]։ С++11-ից սկսած<ref name="C++11" /> ավելացել են որոշ բիտային գործողություններ (<tt>and, or, xor, not</tt>)։
Набор предопределённых функциональных объектов для базовых операций был неотъемлемой частью стандартной библиотеки шаблонов с момента её появления в стандарте<ref name="Stepanov95" />. Это базовые [[Целое (тип данных)#.D0.90.D1.80.D0.B8.D1.84.D0.BC.D0.B5.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5 .D0.BE.D0.BF.D0.B5.D1.80.D0.B0.D1.86.D0.B8.D0.B8|арифметические операции]] (<tt>+-*/%</tt>), базовые [[Логические операции#.D0.9F.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D0.BC.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5|логические операции]] (<tt>&&, ||, !</tt>) и [[Сравнение (программирование)|операции сравнения]] (<tt>==, !=, >, <, >=, <=</tt>). Несмотря на их тривиальность, используя именно эти классы проводилась демонстрация возможностей алгоритмов стандартной библиотеки. Также их наличие способствует удобству и избавляет пользователя библиотеки от избыточной работы по написанию собственных аналогов<ref name="Stroustrup2000" />.
Логические функторы и функторы сравнения являются предикатами и возвращают [[булевский тип]]. Начиная с С++11<ref name="C++11" />, также были добавлены некоторые [[битовые операции]] (<tt>and, or, xor, not</tt>).
{| class="wikitable" style="text-align:center"
|-
Տող 305 ⟶ 304՝
|}
 
=== ԺշտողներԺխտողներ (negators) ===
Также, наряду с предопределёнными предикатами, в заголовочном файле имеются отрицатели предикатов, которые вызывают предикат и возвращают результат обратный результату предиката. Предикатные отрицатели сродни связывателям в том, что они принимают операцию и производят из неё другую операцию. Библиотека предоставляет два таких отрицателя: унарный <tt>not1()</tt> и бинарный <tt>not2()</tt>. Возвращаемым типом этих отрицателей есть специальные вспомогательные классы <tt>unary_negate</tt> и <tt>binary_negate</tt>, определенные следующим образом:
<source lang="cpp">