Funzione bind2nd
Una funzione di supporto del modello che crea un adattatore per convertire un oggetto funzione binario in un oggetto funzione unario associando il secondo argomento della funzione binaria a un valore specificato.
template<class Operation, class Type>
binder2nd <Operation> bind2nd(
const Operation& _Func,
const Type& _Right
);
Parametri
_Func
L'oggetto function 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 function unario che risultati dell'associazione il secondo argomento dell'oggetto funzione binario il valore _Right.
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, allora bind2nd ( _Func, c ) è equivalente al costruttore di classe binder2ndbinder2nd<Operation> ( _Func, c ) 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: <funzionale>
Spazio dei nomi: std