bind1st (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 primer argumento de la función binaria a un valor especificado.
template<class Operation, class Type>
binder1st <Operation> bind1st(
const Operation& _Func,
const Type& _Left
);
Parámetros
_Func
El objeto binario de función para convertirse en un objeto singular de la función._Left
El valor al que el primer 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 primer argumento del objeto binario de la función al valor _Left.
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 Operation escrito y c es una constante, entonces bind1st (_Func, c) es equivalente al constructor de clase binder1st<Operation> (_Func, c) de binder1st y es más conveniente.
Ejemplo
// functional_bind1st.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 greaterthan5: unary_function<int, bool>
{
public:
result_type operator()(argument_type i)
{
return (result_type)(i > 5);
}
};
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(), bind1st(less<int>(), 10));
cout << "The number of elements in v1 greater than 10 is: "
<< result1a << "." << endl;
// Compare: counting the number of integers > 5 in the vector
// with a user defined function object
vector<int>::iterator::difference_type result1b;
result1b = count_if(v1.begin(), v1.end(), greaterthan5());
cout << "The number of elements in v1 greater than 5 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(), bind2nd(less<int>(), 10));
cout << "The number of elements in v1 less than 10 is: "
<< result2 << "." << endl;
}
Requisitos
Encabezado: <functional>
Espacio de nombres: std