boost::bind - C++ - Programmation
Marsh Posté le 14-03-2009 à 02:39:39
en faite je comprends pas trop pourquoi il y a deux 'syntaxe' :
- bind(f, _2, _1)(x, y); // double parenthèses
- bind(f, i, _1); // simple parenthèse
???
Marsh Posté le 14-03-2009 à 09:17:19
1ere ligne construction d'une fonction anonyme puis appel sur les valeurs x,y
2e ligne creation d'une fonction anonyme mais pas d'appel.
Trouve toi un bouquin sur le lambda calcul ca deviendra plus clair
Marsh Posté le 14-03-2009 à 11:38:33
je galère méchamment pour trouver la bonne syntaxe dans le code suivant :
Code :
|
C'est possible d'utiliser bind dans ce genre de contexte? ça à un intérêt ?
Marsh Posté le 14-03-2009 à 12:12:04
pour ce type d'astuce tu peut utiliser un ostream_iterator aussi
Dans ton truc c'est pas un for_each mais un fold qu'il faudrait car en general les foncteurs sont des objets immutables
Marsh Posté le 14-03-2009 à 12:12:45
Code :
|
ça devrait marcher.
Code :
|
Pas essayé, mais ça devrait marcher. Deux syntaxe, l'une avec boost::bind, l'autre avec std::bind1st.
Marsh Posté le 14-03-2009 à 12:14:27
Joel F a écrit : Dans ton truc c'est pas un for_each mais un fold qu'il faudrait car en general les foncteurs sont des objets immutables |
Ca donne quoi un fold en C++ standard ?
Je ne vois que for_each qui s'en rapproche.
Marsh Posté le 14-03-2009 à 12:27:32
std::accumulate (http://www.sgi.com/tech/stl/accumulate.html)
ou
boost::fusion::fold (http://www.boost.org/doc/libs/1_38_0/libs/fusion/doc/html/fusion/algorithm/iteration/functions/fold.html) avec un boost::range pour encapsuler les iterateurs je pense
for_each c'est un map que tu truandes en fold si tu utilise une fonction stateful ce qui est assez moche.
Marsh Posté le 14-03-2009 à 20:16:55
il me manque quoi, pour que mon compilo (VS2008) ne m'indique pas _1 symbole ambigu
Code :
|
Marsh Posté le 14-03-2009 à 21:43:37
Il me semble que for_each est définit dans le sous namespace ll. Et quand j'essqye de mettre boost::lambda::ll::for_each, ça ne passe pas non plus
Marsh Posté le 14-03-2009 à 21:51:55
oula, en general on a jamais besoin de rentré dans les osu-namespace des ns boost :s
Marsh Posté le 13-03-2009 à 17:46:41
Hi,
I am in trouble with bind :
l'argument _1 est utile pour indiquer qu'on se sert de x à la place de _1 :
mais ici le _1 sert à koi ??