std::not1
Материал из cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev ">
</tbody><tbody>
</tbody>
| Определено в заголовочном файле <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 <vector>
#include <iterator>
#include <numeric>
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';
//то же, что и выше, но с использованием `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) |
совместимый с адаптором базовый класс унарной функции (шаблон класса) |