template <class Operation> class binder1st; |
<functional> |
Generate function object class with 1st parameter binded
Generates an unary function object class from the binary object class Operation by binding its first parameter to a fixed value.
binder1st is generally used as a type. The function bind1st (also defined in header <functional>) can be used to directly construct an object of this type.
binder1st is constructed using a binary function object as argument. A copy of this object is used by its member operator() to generate a result from its parameter and the fixed value set on construction.
This class is derived from unary_function and is typically defined as:
template <class Operation> class binder1st
: public unary_function <typename Operation::second_argument_type,
typename Operation::result_type>
{
protected:
Operation op;
typename Operation::first_argument_type value;
public:
binder1st ( const Operation& x,
const typename Operation::first_argument_type& y) : op (x), value(y) {}
typename Operation::result_type
operator() (const typename Operation::second_argument_type& x) const
{ return op(value,x); }
}; |
binder1st class is specifically designed to bind function objects (operations) derived from binary_function (it requires member first_argument_type and second_argument_type).
Members
- constructor
- Constructs an unary function object class from a binary function object by binding its first argument to a value.
- operator()
- Member function taking a single parameter and returning the result of calling the binary function object used at construction with its first argument binded to a specific value.
Example
// binder1st example
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;
int main () {
binder1st < equal_to<int> > equal_to_10 (equal_to<int>(),10);
int numbers[] = {10,20,30,40,50,10};
int cx;
cx = count_if (numbers,numbers+6,equal_to_10);
cout << "There are " << cx << " elements equal to 10.\n";
return 0;
} |
Output:
There are 2 elements equal to 10.
|
See also
| bind1st | Return function object with first parameter binded (function template) |
| binder2nd | Generate function object class with 2nd parameter binded (class template) |