"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Lambdas vs Bind en C++ : quand devriez-vous choisir chacun ?

Lambdas vs Bind en C++ : quand devriez-vous choisir chacun ?

Publié le 2024-11-09
Parcourir:349

Lambdas vs. Bind in C  : When Should You Choose Each?

Lambdas vs Bind en C : polymorphisme et efficacité

Lors de la comparaison de l'utilisation de C 0x lambdas et std::bind pour des tâches similaires , le choix entre les deux peut être influencé par des facteurs tels que le polymorphisme et l'efficacité.

Bind vs. Lambda in Détail

Prenons l'exemple suivant où lambda et bind sont utilisés pour générer des nombres aléatoires à l'aide d'une distribution et d'un moteur :

// Using lambda
auto dice = [&]() { return distribution(engine); };

// Using bind
auto dice = bind(distribution, engine);

Polymorphisme

Contrairement aux lambdas, qui sont monomorphes (c'est-à-dire ont des types fixes), std::bind permet le polymorphisme comportement. Cela signifie que bind peut être utilisé pour créer des fonctions avec des types inconnus, comme démontré ci-dessous :

struct foo {
  typedef void result_type;

  template 
  void operator()(A a, B b) {
    cout 

Dans cet exemple, les types de a et b sont déduits au moment de l'exécution lorsque f est invoqué. Cette flexibilité n'est pas disponible avec les lambdas.

Efficacité

En général, les lambdas ont tendance à être plus efficaces que la liaison lorsque les variables capturées sont utilisées par valeur. En effet, les lambdas capturent directement les variables, tandis que bind crée un objet de fermeture qui fait référence aux variables capturées. Cependant, bind peut offrir des avantages lorsque les variables capturées sont volumineuses ou lorsque la fonction est appelée fréquemment.

Conclusion

Le choix entre lambdas et bind dépend des exigences spécifiques. de la demande. Les lambdas fournissent un polymorphisme et sont efficaces pour capturer de petites variables de type valeur. Bind offre une plus grande flexibilité et peut être préférable lorsqu'il s'agit de fonctions volumineuses ou fréquemment appelées.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3