std::unary_negate
| Определено в заголовочном файле <functional>
|
||
template< class Predicate > struct unary_negate : public std::unary_function<Predicate::argument_type, bool>; |
(до C++11) | |
template< class Predicate > struct unary_negate; |
(начиная с C++11) (устарело в C++17) (удалено в C++20) |
|
std::unary_negate это объект функции-оболочки, возвращающий дополнение содержащегося в нём унарного предиката.
Унарный тип предиката должен определять тип элемента argument_type, который может быть преобразован в тип параметра предиката. Объекты унарной функции, полученные из std::ref, std::cref, std::negate, std::logical_not, std::mem_fn, std::function, std::hash или из другого вызова std::not1 имеют этот тип определённым, как и объекты функций, производные от устаревшей std::unary_function.
Объекты std::unary_negate легко создаются с помощью вспомогательной функции std::not1.
Типы элементы
| Тип | Определение |
argument_type
|
Predicate::argument_type
|
result_type
|
bool
|
Функции-элементы
(конструктор) |
создаёт новый объект unary_negate с предоставленным предикатом (public функция-элемент) |
operator() |
возвращает логическое дополнение результата вызова сохранённого предиката (public функция-элемент) |
std::unary_negate::unary_negate
<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody> explicit unary_negate( Predicate const& pred ); |
(до C++14) | |
constexpr explicit unary_negate( Predicate const& pred ); |
(начиная с C++14) | |
Создаёт функциональный объект std::unary_negate с сохранённым предикатом pred.
Параметры
| pred | — | объект функции предиката |
std::unary_negate::operator()
<tbody> </tbody> <tbody class="t-dcl-rev "> </tbody><tbody> </tbody> bool operator()( argument_type const& x ) const; |
(до C++14) | |
constexpr bool operator()( argument_type const& x ) const; |
(начиная с C++14) | |
Возвращает логическое дополнение результата вызова pred(x).
Параметры
| x | — | аргумент для передачи в предикат |
Возвращаемое значение
Логическое дополнение результата вызова pred(x).
Пример
#include <algorithm>
#include <functional>
#include <iostream>
#include <vector>
struct less_than_7 : std::unary_function<int, bool>
{
bool operator()(int i) const { return i < 7; }
};
int main()
{
std::vector<int> v(7, 7);
v[0] = v[1] = v[2] = 6;
std::unary_negate<less_than_7> not_less_than_7((less_than_7()));
// Решение C++11:
// Используйте std::function<bool (int)>
// std::function<bool (int)> not_less_than_7 =
// [](int x)->bool { return !less_than_7()(x); };
std::cout << std::count_if(v.begin(), v.end(), not_less_than_7);
}
Вывод:
4
Смотрите также
(deprecated in C++17)(удалено в C++20) |
объект функции-обёртки, возвращающий дополнение к содержащемуся в нём бинарному предикату (шаблон класса) |
(C++11) |
обёртывает вызываемый объект любого конструируемого копированием типа с указанной сигнатурой вызова функции (шаблон класса) |
(C++23) |
обёртывает вызываемый объект любого типа с указанной сигнатурой вызова функции (шаблон класса) |
(устарело в C++17)(удалено в C++20) |
создаёт пользовательский объект std::unary_negate (шаблон функции) |
(устарело в C++11)(удалено в C++17) |
создаёт совместимую с адаптером обёртку функционального объекта из указателя на функцию (шаблон функции) |
(устарело в C++11)(удалено в C++17) |
совместимый с адаптором базовый класс унарной функции (шаблон класса) |