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) | совместимый с адаптером базовый класс бинарной функции (шаблон класса) |