今天终于明白了下面这些的区别:
Adaptor and conversion functions
Negators-
not1
- Return negation of unary function object (function template )
-
not2
- Return negation of binary function object (function template )
Parameter binders
-
bind1st
- Return function object with first parameter bound (function template )
-
bind2nd
- Return function object with second parameter bound (function template )
Conversors
-
ptr_fun
- Convert function pointer to function object (function template )
-
mem_fun
- Convert member function to function object (pointer version) (function template )
-
mem_fun_ref
- Convert member function to function object (reference version) (function template )
这几个是function template,而剩下的都是class template。并且这些function template的实现里面用到了其他的class template的定义。
header
<functional>
Function objects
Function objects
are objects specifically designed to be used with a syntax similar to that of functions. In C++, this is achieved by defining member function
operator()
in their class, like for example:
| |
They are especially useful as predicates or comparison functions to be used with standard algorithms .
The standard library provides standard definitions for several function objects and some ways to modify and adapt their behavior in header <functional> :
Base classes :
-
unary_function
- Unary function object base class (class template )
-
binary_function
- Binary function object base class (class template )
Operator classes
Arithmetic operations :
-
plus
- Addition function object class (class template )
-
minus
- Subtraction function object class (class template )
-
multiplies
- Multiplication function object class (class template )
-
divides
- Division function object class (class template )
-
modulus
- Modulus function object class (class template )
-
negate
- Negative function object class (class template )
Comparison operations :
-
equal_to
- Function object class for equality comparison (class template )
-
not_equal_to
- Function object class for non-equality comparison (class template )
-
greater
- Function object class for greater-than inequality comparison (class template )
-
less
- Function object class for less-than inequality comparison (class template )
-
greater_equal
- Function object class for greater-than-or-equal-to comparison (class template )
-
less_equal
- Function object class for less-than-or-equal-to comparison (class template )
Logical operations :
-
logical_and
- Logical AND function object class (class template )
-
logical_or
- Logical OR function object class (class template )
-
logical_not
- Logical NOT function object class (class template )
Adaptor and conversion functions
Negators-
not1
- Return negation of unary function object (function template )
-
not2
- Return negation of binary function object (function template )
Parameter binders
-
bind1st
- Return function object with first parameter bound (function template )
-
bind2nd
- Return function object with second parameter bound (function template )
Conversors
-
ptr_fun
- Convert function pointer to function object (function template )
-
mem_fun
- Convert member function to function object (pointer version) (function template )
-
mem_fun_ref
- Convert member function to function object (reference version) (function template )
Instrumental types
-
unary_negate
- Negate unary function object class (class template )
-
binary_negate
- Negate binary function object class (class template )
-
binder1st
- Generate function object class with 1st parameter bound (class template )
-
binder2nd
- Generate function object class with 2nd parameter bound (class template )
-
pointer_to_unary_function
- Generate unary function object class from pointer (class template )
-
pointer_to_binary_function
- Generate binary function object class from pointer (class template )
-
mem_fun_t
- Generate function object class from parameterless member (pointer version) (class template )
-
mem_fun1_t
- Generate function object class from single-parameter member (pointer version) (class template )
-
const_mem_fun_t
- Generate function object class from const parameterless member (pointer version) (class template )
-
const_mem_fun1_t
- Generate function object class from single-parameter const member (pointer version) (class template )
-
mem_fun_ref_t
- Generate function object class from parameterless member (reference version) (class template )
-
mem_fun1_ref_t
- Generate function object class from single-parameter member (reference version) (class template )
-
const_mem_fun_ref_t
- Generate function object class from const parameterless member (reference version) (class template )
-
const_mem_fun1_ref_t
- Generate function object class from single-parameter const member (reference version) (class template )