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

Content deleted Content added
No edit summary
Տող 198.
{| class="wikitable" style="text-align:center"
|-
! տեսակ
! Тип
! անվանում
! Название
! գործողությունների քանակ
! Кол-во операндов
! վերադարձնող տեսակ
! Возвращаемый тип
! գործողություն
! Действие
|-
! rowspan="6" | СравненияՀամեմատում
| <tt>equal_to</tt>
| Բինար
| Бинарный
| bool
| <tt>x == y </tt>
|-
| <tt>not_equal_to</tt>
| Բինար
| Бинарный
| bool
| <tt>x != y</tt>
|-
| <tt>greater</tt>
| Բինար
| Бинарный
| bool
| <tt>x > y</tt>
|-
| <tt>less</tt>
| Բինար
| Бинарный
| bool
| <tt>x < y</tt>
|-
| <tt>greater_equal</tt>
| Բինար
| Бинарный
| bool
| <tt>x >= y</tt>
|-
| <tt>less_equal</tt>
| Բինար
| Бинарный
| bool
| <tt>x <= y</tt>
Տող 237.
! rowspan="3" | Логические
| <tt>logical_and</tt>
| Բինար
| Бинарный
| bool
| <tt>x && y</tt>
|-
| <tt>logical_or</tt>
| Բինար
| Бинарный
| bool
| <tt>x &#124;&#124; y</tt>
|-
| <tt>logical_not</tt>
| Ունար
| Унарный
| bool
| <tt>!x</tt>
|-
! rowspan="6" | АрифметическиеԹվաբանական
| <tt>plus</tt>
| Բինար
| Бинарный
| T
| <tt>x + y</tt>
|-
| <tt>minus</tt>
| Բինար
| Бинарный
| T
| <tt>x - y</tt>
|-
| <tt>multiplies</tt>
| Բինար
| Бинарный
| T
| <tt>x * y</tt>
|-
| <tt>divides</tt>
| Բինար
| Бинарный
| T
| <tt>x / y</tt>
|-
| <tt>modulus</tt>
| Բինար
| Бинарный
| T
| <tt>x % y</tt>
|-
| <tt>negate</tt>
| Ունար
| Унарный
| T
| <tt>-x</tt>
|-
! rowspan="4" | БитовыеԲիտային ([[C++11]])
| <tt>bit_and</tt>
| Բինար
| Бинарный
| T
| <tt>x & y</tt>
|-
| <tt>bit_or</tt>
| Բինար
| Бинарный
| T
| <tt>x &#124; y</tt>
|-
| <tt>bit_xor</tt>
| Բինար
| Бинарный
| T
| <tt>x ^ y</tt>
|-
| <tt>bit_not</tt>
| Ունար
| Унарный
| T
| <tt>~x</tt>
|}
 
=== Ժխտողներ (negators) ===
Также, наряду с предопределёнными предикатами, в заголовочном файле имеются отрицатели предикатов, которые вызывают предикат и возвращают результат обратный результату предиката. Предикатные отрицатели сродни связывателям в том, что они принимают операцию и производят из неё другую операцию. Библиотека предоставляет два таких отрицателя: унарный <tt>not1()</tt> и бинарный <tt>not2()</tt>. Возвращаемым типом этих отрицателей есть специальные вспомогательные классы <tt>unary_negate</tt> и <tt>binary_negate</tt>, определенные следующим образом:
<source lang="cpp">
template <class Predicate> class unary_negate {
public:
explicit unary_negate(const Predicate& pred);
bool operator()(const typename Predicate::argument_type& x) const;
};
 
template <class Predicate> class binary_negate {
public:
explicit binary_negate(const Predicate& pred);
bool operator()(const typename Predicate::first_argument_type& x, const typename Predicate::second_argument_type& y) const;
</source>
Здесь <tt>operator()</tt> возвращает <tt>!pred(x)</tt> в первом случае, и <tt>!pred(x,y)</tt> во втором. Унарный предикат должен иметь определенный тип <tt>argument_type</tt>, а бинарный — типы <tt>first_argument_type</tt> и <tt>second_argument_type</tt>. Наличие таких определений у таких классов как <tt>std::function</tt>, <tt>std::mem_fn</tt> и <tt>std::ref</tt> делает возможным использование отрицателей вместе с обёртками функций.
 
В изначальной редакции стандарта <tt>unary_negate</tt> и <tt>binary_negate</tt> наследовались от базовых классов <tt>unary_function</tt> и <tt>binary_function</tt> соответственно, что предоставляло пользователю возможность использовать отрицатели для собственных предикатов. Так как упомянутые выше базовые классы были помечены устаревшими, а какой-либо замены отрицателям, помимо лямбда-функций, нет<ref>
{{cite web
| url = http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3198.htm
| title = Deprecating unary_function and binary_function (Revision 1)
| accessdate = 2013-05-03
| lang = en
| archiveurl = http://www.webcitation.org/6GgRAsP2r
| archivedate = 2013-05-17
}}</ref>, то их решено было оставить.
 
== Փաթեթների հղումներ ==