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