Condividi tramite


bind2nd Function

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

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

Parametri

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

  • _Right
    Il valore che il secondo argomento dell'oggetto funzione binario deve essere associato.

Valore restituito

L'oggetto funzione unario che risultati dell'associazione il secondo argomento dell'oggetto funzione binario il valore _Right.

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 Operazione e c è una costante, quindi bind2nd ( _Func, c ) equivale al costruttore di classe binder2nd<Operation> ( _Func, c ) binder2nd e più semplice.

Esempio

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

Requisiti

intestazione: <functional>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

Libreria di modelli standard