Se recomienda usar Visual Studio 2017

binder1st (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Clase de plantilla que proporciona un constructor que convierte 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 binder1st
 : public unary_function <typename Operation::second_argument_type,
    typename Operation::result_type>  
{
    public:
 typedef typename Operation::argument_type argument_type;
    typedef typename Operation::result_type result_type;
    binder1st(
 const Operation& _Func,
    const typename Operation::first_argument_type& left);

    result_type operator()(
    const argument_type& right) const;

    result_type operator()(
    const argument_type& right) const;

    protected:
 Operation op;
    typename Operation::first_argument_type value;
 };

Parámetros

_Func
El objeto de función binaria para convertirse en un objeto de función unaria.

left
El valor al que el primer argumento del objeto de función binaria es enlazar.

right
El valor del argumento que el objeto binario adaptado se compara con el valor fijo del segundo argumento.

El objeto de función unaria resultante de enlazar el primer argumento de objeto de función binaria en el valorleft.

La clase de plantilla almacena una copia de un objeto de función binaria _Func en opy una copia de left en valor. Define la función miembro operator() que devuelva op( valor, right).

Si _Func es un objeto de tipo operación y c es una constante, a continuación, bind1st ( _Func, c ) es equivalente a la binder1st constructor de clase binder1st < operación> ( _Func, c ) y más conveniente.

// functional_binder1st.cpp  
// compile with: /EHsc  
#include <vector>  
#include <functional>  
#include <algorithm>  
#include <iostream>  
  
using namespace std;  
  
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 result1;  
    result1 = count_if(v1.begin(), v1.end(),  
        binder1st<less<int> >(less<int>(), 10));  
    cout << "The number of elements in v1 greater than 10 is: "  
         << result1 << "." << endl;  
  
    // Compare use of binder2nd fixing 2nd argument:  
    // count the number of integers < 10 in the vector  
    vector<int>::iterator::difference_type result2;  
    result2 = count_if(v1.begin(), v1.end(),  
        binder2nd<less<int> >(less<int>(), 10));  
    cout << "The number of elements in v1 less than 10 is: "  
         << result2 << "." << endl;  
}  
\* Output:   
The vector v1 = ( 0 5 10 15 20 25 )  
The number of elements in v1 greater than 10 is: 3.  
The number of elements in v1 less than 10 is: 2.  
*\  

Encabezado:<>>

Espacio de nombres: std

Seguridad para subprocesos en la biblioteca estándar de C++
Biblioteca de plantillas estándar

Mostrar: