bind2nd Function

Una función de plantilla de aplicación auxiliar que crea un adaptador para convertir un objeto binario de función en un objeto singular de función enlazando el segundo argumento de la función binaria con un valor especificado.

template<class Operation, class Type>
   binder2nd <Operation> bind2nd(
      const Operation& _Func, 
      const Type& _Right
   );

Parámetros

  • _Func
    El objeto binario de función para convertirse en un objeto singular de la función.

  • _Right
    El valor al que el segundo argumento del objeto binario de la función debe ser enlazado.

Valor devuelto

El objeto singular de la función que resultados de enlace el segundo argumento del objeto binario de la función al valor _Right.

Comentarios

Los enlazadores de la función es una clase de adaptador de la función y, que devuelven objetos de función, pueden utilizarse en ciertos tipos de composición de funciones para construir expresiones más complejas y más eficaces.

Si _Func es un objeto de Operacin escrito y c es una constante, entonces bind2nd ( _Func, c ) es equivalente al constructor de clase binder2ndOperacin ( _Func, c ) de binder2nd y más conveniente.

Ejemplo

// functional_bind2nd.cpp
// compile with: /EHsc
#include <vector>
#include <functional>
#include <algorithm>
#include <iostream>

using namespace std;

// Creation of a user-defined function object
// that inherits from the unary_function base class
class greaterthan15: unary_function<int, bool>
{
public:
    result_type operator()(argument_type i)
    {
        return (result_type)(i > 15);
    }
};

int main()
{
    vector<int> v1;
    vector<int>::iterator Iter;

    int i;
    for (i = 0; i <= 5; i++)
    {
        v1.push_back(5 * i);
    }

    cout << "The vector v1 = ( ";
    for (Iter = v1.begin(); Iter != v1.end(); Iter++)
        cout << *Iter << " ";
    cout << ")" << endl;

    // Count the number of integers > 10 in the vector
    vector<int>::iterator::difference_type result1a;
    result1a = count_if(v1.begin(), v1.end(), bind2nd(greater<int>(), 10));
    cout << "The number of elements in v1 greater than 10 is: "
         << result1a << "." << endl;

    // Compare counting the number of integers > 15 in the vector
    // with a user-defined function object
    vector<int>::iterator::difference_type result1b;
    result1b = count_if(v1.begin(), v1.end(), greaterthan15());
    cout << "The number of elements in v1 greater than 15 is: "
         << result1b << "." << endl;

    // Count the number of integers < 10 in the vector
    vector<int>::iterator::difference_type result2;
    result2 = count_if(v1.begin(), v1.end(), bind1st(greater<int>(), 10));
    cout << "The number of elements in v1 less than 10 is: "
         << result2 << "." << endl;
}
  
  
  

Requisitos

encabezado: <funcional>

espacio de nombres: std

Vea también

Referencia

Biblioteca de plantillas estándar