bind2nd, fonction
Une fonction modèle d'aide qui crée un adaptateur pour convertir un objet fonction binaire en un objet fonction unaire en liant le second argument de la fonction binaire à une valeur spécifiée.
template<class Operation, class Type>
binder2nd <Operation> bind2nd(
const Operation& _Func,
const Type& _Right
);
Paramètres
_Func
L'objet binaire de la fonction à convertir en un objet unaire de fonction._Right
La nouvelle valeur du second argument de l'objet binaire de la fonction doit être lié.
Valeur de retour
L'objet unaire de la fonction de résultats de la liaison le deuxième argument de l'objet binaire de fonction à la valeur _Right.
Notes
Les classeurs de fonction sont un type de fonction et, car ils retournent des objets de fonction, peuvent être utilisés dans certains types de publication de la fonction pour créer des expressions plus compliquées et plus puissant.
Si _Func est un objet de type Opération et c constante, puis bind2nd ( _Func, c ) est équivalent au constructeur binder2nd<Operation> ( _Func, c ) de la classe d'binder2nd et plus pratique.
Exemple
// 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;
}
Configuration requise
En-tête : <functional>
Espace de noms : std