Maison  >  Article  >  développement back-end  >  Utilisation et caractéristiques des fonctions anonymes C++

Utilisation et caractéristiques des fonctions anonymes C++

PHPz
PHPzoriginal
2024-04-19 09:03:02731parcourir

La fonction anonyme, également connue sous le nom d'expression lambda, est une fonction sans spécifier de nom, utilisée pour un usage unique ou pour passer un pointeur de fonction. Les fonctionnalités incluent : l’anonymat, l’utilisation unique, les fermetures, l’inférence du type de retour. En pratique, il est souvent utilisé pour le tri ou d’autres appels de fonction ponctuels.

C++ 匿名函数的用法和特点

Utilisation et caractéristiques des fonctions anonymes C++

La fonction anonyme, également appelée expression Lambda, est une fonction qui ne précise pas de nom lorsqu'elle est définie. Elle est généralement utilisée pour définir des fonctions à usage unique, ou dans Utilisé lorsqu'un pointeur de fonction doit être transmis.

Grammaire

La syntaxe de base de l'expression Lambda est la suivante :

[capture list] (parameters) -> return type { function body }
  • capture list : utilisée pour capturer des variables externes, similaire au mot-clé auto dans une fonction, vous pouvez spécifier le nom de la variable ou la référence à être capturé.
  • parameters : La liste des paramètres de l'expression Lambda.
  • return type : Le type de retour de l'expression Lambda.
  • function body : Le corps de fonction de l'expression Lambda.

Caractéristiques

  • Anonymat : les expressions Lambda n'ont pas de nom et ne peuvent être référencées que via des pointeurs de fonction ou d'autres structures syntaxiques.
  • Utilisation unique : les expressions lambda sont généralement utilisées pour un usage unique et ne seront généralement pas appelées à nouveau après avoir été définies.
  • Closure : les expressions Lambda peuvent capturer des variables externes pour former des fermetures, et les valeurs des variables externes peuvent être utilisées.
  • Inférence de type de retour : le type de retour d'une expression lambda peut être déduit par le compilateur sauf indication contraire explicite.

Cas pratique

Voici un exemple de tri de vecteurs à l'aide d'expressions Lambda :

#include <vector>
#include <algorithm>

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

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

  // 输出排序后的向量
  for (auto& elem : vec) {
    std::cout << elem << " ";
  }
  std::cout << std::endl;

  return 0;
}

Sortie :

1 2 3 4 5

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