Lier Vs Lambda?

J'ai une question sur le style préféré: std::bind Vs lambda dans C++0x. Je sais qu'ils servent -en quelque sorte - des fins différentes, mais permet de jeter un exemple de l'intersection de la fonctionnalité.

À l'aide de lambda:

uniform_int<> distribution(1, 6);
mt19937 engine;
//lambda style
auto dice = [&]() { return distribution(engine); };

À l'aide de bind:

uniform_int<> distribution(1, 6);
mt19937 engine;
//bind style
auto dice = bind(distribution, engine);

Qui l'on doit-on préférer? pourquoi? en supposant que les situations plus complexes par rapport à l'exemple cité. c'est à dire Quels sont les avantages/inconvénients de l'un sur l'autre?

  • existe-il des écarts de performances? la vitesse, la consommation de mémoire, l'utilisation du tas?
  • Je ne sais pas vraiment si il y a une différence de performance/consommation de mémoire entre ces deux outils 🙂
  • btw: les deux versions ne sont pas équivalentes car lier des copies des arguments. Alternative: bind(ref(distribution),ref(moteur))
InformationsquelleAutor AraK | 2009-12-18