std::unary_function
Материал из cppreference.com
< cpp | utility | functional
Определено в заголовочном файле <functional>
|
||
template <typename ArgumentType, typename ResultType> struct unary_function; |
(устарело в C++11) (удалено в C++17) |
|
unary_function
это базовый класс для создания объектов-функций с одним аргументом.
unary_function
не определяет operator(); ожидается, что его будут определять производные классы. unary_function
предоставляет только два типа argument_type
и result_type
, определяемые параметрами шаблона.
Некоторые адаптеры объектов функций стандартной библиотеки, такие как std::not1, требуют, чтобы объекты функций, которые они адаптируют, имели некоторые определённые типы; std::not1 требует, чтобы адаптируемый объект функции имел тип с именем argument_type
. Создание объектов-функций, которые принимают один аргумент из unary_function
, это простой способ сделать их совместимыми с этими адаптерами.
unary_function
устарел в C++11.
[править] Типы элементы
Тип | Определение |
argument_type
|
ArgumentType
|
result_type
|
ResultType
|
[править] Пример
Запустить этот код
#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; for (int i = 0; i < 10; ++i) v.push_back(i); std::cout << std::count_if(v.begin(), v.end(), std::not1(less_than_7())); /* Решение C++11: // Приведение к std::function<bool (int)> каким-то образом, даже с лямбдой std::cout << std::count_if(v.begin(), v.end(), std::not1(std::function<bool (int)>([](int i){ return i < 7; })) ); */ }
Вывод:
3
[править] Смотрите также
(C++11) |
обёртывает вызываемый объект любого конструируемого копированием типа с указанной сигнатурой вызова функции (шаблон класса) |
(C++23) |
обёртывает вызываемый объект любого типа с указанной сигнатурой вызова функции (шаблон класса) |
(устарело в C++11)(удалено в C++17) |
создаёт совместимую с адаптером обёртку функционального объекта из указателя на функцию (шаблон функции) |
(устарело в C++11)(удалено в C++17) |
совместимая с адаптером обёртка для указателя на унарную функцию (шаблон класса) |
(deprecated in C++11)(удалено в C++17) |
совместимый с адаптером базовый класс бинарной функции (шаблон класса) |