Namespaces
Variants

std:: unary_negate

From cppreference.net
Utilities library
Function objects
Function invocation
(C++17) (C++23)
Identity function object
(C++20)
Old binders and adaptors
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
( until C++20* )
( until C++20* )
( until C++17* ) ( until C++17* )
( until C++17* ) ( until C++17* )

( until C++17* )
( until C++17* ) ( until C++17* ) ( until C++17* ) ( until C++17* )
unary_negate
( until C++20* )
( until C++20* )
Определено в заголовочном файле <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

Функции-члены

(constructor)
создает новый объект unary_negate с предоставленным предикатом
(public member function)
operator()
возвращает логическое дополнение результата вызова сохраненного предиката
(public member function)

std::unary_negate:: unary_negate

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()

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) (removed in C++20)
объект-функция-обёртка, возвращающий дополнение бинарного предиката, который он хранит
(шаблон класса)
(C++11)
копируемая обёртка для любого копируемого вызываемого объекта
(шаблон класса)
перемещаемая обёртка для любого вызываемого объекта, поддерживающего квалификаторы в заданной сигнатуре вызова
(шаблон класса)
(deprecated in C++17) (removed in C++20)
создаёт пользовательский объект std::unary_negate
(шаблон функции)
(deprecated in C++11) (removed in C++17)
создаёт обёртку объекта-функции, совместимую с адаптерами, из указателя на функцию
(шаблон функции)
(deprecated in C++11) (removed in C++17)
базовый класс унарной функции, совместимый с адаптерами
(шаблон класса)