Spec-Zone.ru › C++

std::not1

Определено в заголовке <functional>
template< class Predicate >
std::unary_negate<Predicate> not1( const Predicate& pred );
(до C++14)
template< class Predicate >
constexpr std::unary_negate<Predicate> not1( const Predicate& pred );
(с C++14)
(устарело в C++17)
(удалено в C++20)

Функция std::not1 — вспомогательная функция для создания объекта функции, возвращающего дополнение унарной предикатной функции, переданной в качестве аргумента. Созданный объект функции имеет тип std::unary_negate<Predicate>.

Тип унарного предиката должен определять член-тип argument_type, преобразуемый в тип параметра предиката. Объекты унарных функций, полученные из std::ref, std::cref, std::negate, std::logical_not, std::mem_fn, std::function, std::hash, или из другого вызова std::not1, а также объекты функций, производные от устаревшего std::unary_function, имеют этот тип.

Параметры

pred - унарный предикат

Возвращаемое значение

Функция std::not1 возвращает объект типа std::unary_negate<Predicate>, созданный с помощью pred.

Исключение

(нет)

Пример

#include <algorithm>
#include <functional>
#include <iostream>
#include <iterator>
#include <numeric>
#include <vector>
 
struct LessThan7 : std::unary_function<int, bool>
{
    bool operator()(int i) const { return i < 7; }
};
 
int main()
{
    std::vector<int> v(10);
    std::iota(std::begin(v), std::end(v), 0);
 
    std::cout << std::count_if(begin(v), end(v), std::not1(LessThan7())) << '\n';
 
    // the same as above using std::function
    std::function<bool(int)> less_than_9 = [](int x) { return x < 9; };
    std::cout << std::count_if(begin(v), end(v), std::not1(less_than_9)) << '\n';
}

Вывод:

3
1

См. также

not_fn
(C++17)
создаёт объект функции, возвращающий дополнение результата вызова объекта функции, который он содержит
(шаблон функции)
unary_negate
(устарело в C++17)(удалено в C++20)
объект-обёртка функции, возвращающий дополнение унарного предиката, который он содержит
(шаблон класса)
function
(C++11)
оборачивает вызываемый объект любого копируемого типа с заданной сигнатурой вызова функции
(шаблон класса)
move_only_function
(C++23)
оборачивает вызываемый объект любого типа с заданной сигнатурой вызова функции
(шаблон класса)
not2
(устарело в C++17)(удалено в C++20)
строит объект типа std::binary_negate
(шаблон функции)
ptr_fun
(устарело в C++11)(удалено в C++17)
создает адаптер-совместимый объект-обёртку функции из указателя на функцию
(шаблон функции)
unary_function
(устарело в C++11)(удалено в C++17)
адаптер-совместимый базовый класс унарной функции
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/utility/functional/not1

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API