<functional>
The <functional>
header defines several functionals,
or function objects. A function object is an object
that has an operator( )
, so it can be
called using the same syntax as a function. Function objects are most
often used with the standard algorithms.
For example, to copy a sequence of integers, adding a fixed amount (42) to each value, you could use the following expression:
std::transform(src.begin( ), src.end( ), dst.begin( ), std::bind2nd(std::plus<int>( ), 42))
The result of combining bind2nd
and plus<int>
is a function
object that adds the value 42
when it
is applied to any integer. The transform
algorithm copies all the elements
from src
to dst
, applying the functional argument to each
element. See the detailed description of bind2nd
and plus
in this section for details.
The standard function objects are defined for C++ operators; for binding function arguments; and for adapting functions, member functions, etc., as function objects.
Boost defines functionals that extend and improve on those in the standard library. See Appendix B for information about Boost.
Get C++ In a Nutshell now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.