Maison >développement back-end >C++ >Comment remplacer le pointeur de fonction par une expression lambda C++ ?

Comment remplacer le pointeur de fonction par une expression lambda C++ ?

PHPz
PHPzoriginal
2024-04-17 16:24:02397parcourir

Le remplacement des pointeurs de fonction par des expressions lambda améliore la lisibilité, réduit le code passe-partout et augmente la réutilisabilité. Plus précisément, les expressions lambda utilisent la syntaxe suivante : [capture list](parameter list) -> return type {body}, et peuvent être utilisées dans des cas pratiques tels que le tri vectoriel pour améliorer la simplicité et la maintenabilité du code.

如何用 C++ lambda 表达式替换函数指针?

Remplacez les pointeurs de fonction par des expressions Lambda C++

Les expressions Lambda ont été introduites en C++11 et fournissent un moyen simple de définir des fonctions anonymes ou des pointeurs de fonction. Le remplacement des pointeurs de fonction par des expressions lambda présente de nombreux avantages, notamment :

  • Meilleure lisibilité
  • Code passe-partout réduit
  • Réutilisabilité améliorée du code

Syntaxe

La syntaxe d'une expression lambda est la suivante :

[capture list](parameter list) -> return type { body }
  • liste de capture : Une liste de variables séparées par des virgules et placées entre parenthèses qui seront capturées à partir de la portée de l'expression lambda.
  • liste de paramètres : Une liste de paramètres séparés par des virgules entre parenthèses.
  • type de retour : Le type de valeur de retour de la fonction (facultatif).
  • body : Le corps de la fonction, entouré d'accolades.

Exemple

Ce qui suit est un exemple de remplacement de pointeurs de fonction par des expressions lambda :

// 函数指针方式
int compare(int a, int b) { return a - b; }

// Lambda 表达式方式
auto compare = [](int a, int b) { return a - b; };

Cas pratique : trier les vecteurs

On peut voir les avantages des expressions lambda dans un cas pratique :

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> v = { 1, 5, 3, 2, 4 };

  // 用 lambda 表达式对向量进行排序
  std::sort(v.begin(), v.end(), [](int a, int b) { return a < b; });

  // 打印排序后的向量
  for (int x : v) {
    std::cout << x << " ";
  }

  return 0;
}

In dans ce cas, l'expression lambda est utilisée pour définir une fonction de comparaison utilisée pour trier les vecteurs. Il n'est pas nécessaire de définir des fonctions distinctes et le code est plus simple et plus facile à comprendre.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn