Condividi tramite


bind1st Function

Una funzione di supporto del modello che crea un adattatore per convertire un oggetto funzione binario in un oggetto funzione unario associazione del primo argomento della funzione binaria a un valore specificato.

template<class Operation, class Type>
   binder1st <Operation> bind1st(
      const Operation& _Func, 
      const Type& _Left
   );

Parametri

  • _Func
    L'oggetto funzione binario da convertire in un oggetto funzione unario.

  • _Left
    Il valore che il primo argomento dell'oggetto funzione binario deve essere associato.

Valore restituito

L'oggetto funzione unario che risultati dell'associazione il primo argomento dell'oggetto funzione binario il valore _Left.

Note

I gestori di associazione di funzione è un tipo di adattatori di funzione e, che restituiscono gli oggetti funzione, possono essere utilizzati in determinati tipi di composizioni di funzione per creare espressioni più complesse e più efficiente.

Se _Func è un oggetto di tipo Operation e c è una costante, quindi bind1st (_Func, c) equivale al costruttore di classe binder1st<Operation> binder1st (_Func, c) ed è preferibile.

Esempio

// 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;
}
  
  
  

Requisiti

intestazione: <functional>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

Libreria di modelli standard