Functor Base Classes(3)   OpenBSD Programmer's Manual  Functor Base Classes(3)



NNAAMMEE
       Functor Base Classes -

   CCoommppoouunnddss
       struct bbiinnaarryy__ffuunnccttiioonn
       struct uunnaarryy__ffuunnccttiioonn

DDeettaaiilleedd DDeessccrriippttiioonn
       Function objects, or _f_u_n_c_t_o_r_s, are objects with an operator() defined
       and accessible. They can be passed as arguments to algorithm templates
       and used in place of a function pointer. Not only is the resulting
       expressiveness of the library increased, but the generated code can be
       more efficient than what you might write by hand. When we refer to
       'functors,' then, generally we include function pointers in the
       description as well.

       Often, functors are only created as temporaries passed to algorithm
       calls, rather than being created as named variables.

       Two examples taken from the standard itself follow. To perform a by-
       element addition of two vectors a and b containing double, and put the
       result in a, use

         transform (a.begin(), a.end(), b.begin(), a.begin(), plus<double>());


       To negate every element in a, use

         transform(a.begin(), a.end(), a.begin(), negate<double>());


       The addition and negation functions will be inlined directly.

       The standard functiors are derived from structs named unary_function and binary_function. These two classes contain nothing but typedefs, to aid in generic (template) programming. If you write your own functors, you might consider doing the same.



libstdc++-v3 Source               29 Apr 2003          Functor Base Classes(3)
