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/cpp/utility/functional/not1

Spec-Zone.ru

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