Les objets fonction et les expressions lambda sont tous deux des outils permettant de créer des fonctions anonymes. Les principales différences sont : Syntaxe : les objets fonction utilisent des définitions de classe, tandis que les expressions lambda utilisent la syntaxe []. Portée : les objets fonction peuvent être utilisés en dehors de la classe, tandis que les expressions lambda sont limitées à la portée de la définition. Capture : les objets fonction ne peuvent pas capturer de variables externes, mais les expressions lambda peuvent être capturées via des listes de capture. Frais généraux : les frais généraux de création d’objets de fonction sont faibles, les frais généraux d’expression lambda sont élevés. Réutilisabilité : les objets fonction sont généralement réutilisables, les expressions lambda sont généralement à usage unique.
La différence entre les objets fonction STL et les expressions lambda C++
Les objets fonction et les expressions lambda sont tous deux des outils utilisés pour créer des fonctions anonymes en C++. Bien qu'ils présentent des similitudes, il existe également des différences clés :
Syntaxe
[]
. Scope
Capture
Overhead
Réutilisabilité
Cas pratique
Supposons que nous ayons un tableau d'entiers et que nous voulions trouver le premier élément qui remplit une certaine condition (par exemple, le premier élément supérieur à 10).
Utilisation d'un objet fonction :
class GreaterThan10 { public: bool operator()(int x) { return x > 10; } }; int main() { int arr[] = {1, 5, 7, 12, 14}; auto found = find_if(begin(arr), end(arr), GreaterThan10()); if (found != end(arr)) { cout << "First number greater than 10: " << *found << endl; } return 0; }
Utilisation d'une expression lambda :
int main() { int arr[] = {1, 5, 7, 12, 14}; auto found = find_if(begin(arr), end(arr), [](int x) { return x > 10; }); if (found != end(arr)) { cout << "First number greater than 10: " << *found << endl; } return 0; }
Dans cet exemple, une expression lambda est utilisée pour créer une fonction anonyme qui détermine si un entier est supérieur à 10.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!