Comprendre le foncteur bind2nd
Hello,
J'ai un peu mal à saisir le rôle de bind2nd.
Soit l'exemple suivant, issu de CPlusPlus :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| // bind2nd example
#include <iostream>
#include <functional>
#include <algorithm>
using namespace std;
int main () {
int numbers[] = {10,-20,-30,40,-50};
int cx;
cx = count_if ( numbers, numbers+5, bind2nd(less<int>(),0) );
cout << "There are " << cx << " negative elements.\n";
return 0;
} |
Dites-moi si je me plante :
count_if travaille avec un prédicat unaire, et ne passe donc au foncteur qu'un seul argument, l'élément courant, et attend un booléen.
less<>, foncteur binaire, compare l'unique argument envoyé par count_if, et la valeur 0, puis renvoie un booléen, pour satisfaire count_if.
L'inversion des deux arguments de bind2nd aurait nécessité l'utilisation de bind1st.
J'ai bon ?