Maison  >  Article  >  développement back-end  >  Comment les expressions C++ Lambda sont-elles utilisées dans la programmation fonctionnelle ?

Comment les expressions C++ Lambda sont-elles utilisées dans la programmation fonctionnelle ?

WBOY
WBOYoriginal
2024-06-04 20:31:01419parcourir

L'expression C++ Lambda est un outil de programmation fonctionnelle pratique. La syntaxe est : [capture_list] (parameter_list) -> return_type { body }Cas pratique : Tri : Tri de la liste de mots par longueur de chaîne Filtrage : Le filtrage est divisible par 3 Liste de nombres.

C++ Lambda 表达式如何用于函数式编程?

Expression Lambda C++ : un outil puissant pour la programmation fonctionnelle

En C++, l'expression lambda est le moyen le plus pratique de passer un bloc de code en tant que paramètre de fonction ou de renvoyer une valeur. Leur syntaxe concise et leurs fonctionnalités puissantes en font de puissants outils de programmation fonctionnelle.

Syntaxe

Les expressions lambda ont le format de syntaxe suivant :

[capture_list] (parameter_list) -> return_type { body }
  • capture_list : Capturez une liste de variables externes qui peuvent être utilisées à l'intérieur du corps lambda.
  • parameter_list : La liste des paramètres de la fonction lambda.
  • return_type : Type de retour facultatif.
  • corps : corps à fonction lambda.

Cas pratique

1. Cas de tri

Utilisez l'expression lambda pour trier la liste de mots par longueur de chaîne :

#include <vector>
#include <algorithm>

int main() {
  std::vector<std::string> words = {"Hello", "World", "Lambda", "Expression"};

  std::sort(words.begin(), words.end(),
    [](const std::string& a, const std::string& b) {
      return a.size() < b.size();
    });

  for (const auto& word : words) {
    std::cout << word << "\n";
  }
  return 0;
}

Sortie :

Hello
Lambda
World
Expression

2. liste possible de nombres divisibles par 3 :

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9};

  std::vector<int> filteredNumbers;
  std::copy_if(numbers.begin(), numbers.end(),
    std::back_inserter(filteredNumbers),
    [](int number) {
      return number % 3 == 0;
    });

  for (const auto& number : filteredNumbers) {
    std::cout << number << "\n";
  }
  return 0;
}

Sortie :

3
6
9

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