std::unary_function
2015-01-09 15:58
183 查看
C++98
Unary function object base class
Note: This class has been deprecated in C++11.
This is a base class for standard unary function objects.
Generically, function objects are instances of a class with member function
parameter when a generic function type is expected.
In the case of unary function objects, this
unary_function is just a base class, from which specific unary function objects are derived. It has no
the template parameters. It is defined as:
Possible output:
Unary function object base class
Note: This class has been deprecated in C++11.
This is a base class for standard unary function objects.
Generically, function objects are instances of a class with member function
operator()defined. This member function allows the object to be used with the same syntax as a regular function call, and therefore its type can be used as template
parameter when a generic function type is expected.
In the case of unary function objects, this
operator()member function takes a single parameter.
unary_function is just a base class, from which specific unary function objects are derived. It has no
operator()member defined (which derived classes are expected to define) - it simply has two public data members that are typedefs of
the template parameters. It is defined as:
1 2 3 4 5 | template <class Arg, class Result> struct unary_function { typedef Arg argument_type; typedef Result result_type; }; |
Member types
member type | definition | notes |
---|---|---|
argument_type | The first template parameter (Arg) | Type of the argument in member operator() |
result_type | The second template parameter (Result) | Type returned by member operator() |
Example
1 2 3 4 56 | // unary_function example #include <iostream> // std::cout, std::cin #include <functional> // std::unary_function struct IsOdd : public std::unary_function<int,bool> { bool operator() (int number) {return (number%2!=0);} }; int main () { IsOdd IsOdd_object; IsOdd::argument_type input; IsOdd::result_type result; std::cout << "Please enter a number: "; std::cin >> input; result = IsOdd_object (input); std::cout << "Number " << input << " is " << (result?"odd":"even") << ".\n"; return 0; } | Edit & Run |
Please enter a number: 2 Number 2 is even. |
相关文章推荐
- 为什么在定义能够使用函数适配器的函数的时候要继承一下std::unary_function或者std::binary_function
- std::unary_function 和 std::binary_function.
- C++:error C4996: 'std::_Uninitialized_copy0': Function call with parameters that may be unsafe
- C++11中万能的可调用类型声明std::function<...>
- 【转】C++11中的std::function
- C++11中万能的可调用类型声明std::function<...>
- C++11中的std::function
- std::function介绍
- C++11 中std::function和std::bind的用法
- C++11中的std::function
- std::function与std::bind 函数指针
- C++11新特性之std::bind与std::function
- c++11特性与cocos2d-x 3.0之std::bind与std::function
- 【很nice的一篇文章】c++11特性与cocos2d-x 3.0之std::bind与std::function
- std::tr1::function
- 用std::function和std::bind实现函数回调,通知,cocos2dx
- 一段关于c++11中lambda表达式和std::function的体验代码
- c++11 对std::function与std::bind理解
- [cocos2d-x3.x学习笔记]lambda表达式 std::function CC_CALLBACK_ 事件回调实现
- C++11中的std::function,Lambda表达式