Hello,
J'ai un peu mal à saisir le rôle de bind2nd.
Soit l'exemple suivant, issu de CPlusPlus :
Dites-moi si je me plante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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 ?
Partager