Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

bind2nd (Función)

 

Función de plantilla auxiliar que crea un adaptador para convertir un objeto de función binaria en un objeto de función unaria enlazando el segundo argumento de la función binaria a un valor especificado.


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

_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.

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

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 Operación escrito y c es una constante, entonces bind2nd ( _Func, c ) es equivalente al constructor de clase binder2nd<Operation> ( _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;
}
          The vector v1 = ( 0 5 10 15 20 25 )
El número de elementos en v1 mayor de 10 es: 3.
El número de elementos en v1 mayor de 15 es: 2.
El número de elementos en v1 menos de 10 es: 2.

Requisitos

Encabezado: <functional>

Espacio de nombres: std

Mostrar: