Funzione bind1st
Una funzione di supporto del modello che crea un adattatore per convertire un oggetto funzione binario in un oggetto funzione unario associando il 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 function 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 function unario che risultati dell'associazione il primo argomento dell'oggetto funzione binario il valore _Left.
Note
I raccoglitori di funzione sono un tipo di adattatore di funzione e, poiché restituiscono gli oggetti funzione, possono essere utilizzati in determinati tipi di composizioni di funzione di creare espressioni più complesse e più efficaci.
Se _Func è un oggetto di tipo Operation e c è una costante, quindi bind1st (_Func, c) equivale al costruttore di classe binder1st<Operation> (_Func, c) di binder1st 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: <funzionale>
Spazio dei nomi: std