Maison > développement back-end > C++ > le corps du texte

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

WBOY
Libérer: 2024-06-04 20:31:01
original
483 Les gens l'ont consulté

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 }
Copier après la connexion
  • 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;
}
Copier après la connexion

Sortie :

Hello
Lambda
World
Expression
Copier après la connexion

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;
}
Copier après la connexion

Sortie :

3
6
9
Copier après la connexion

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!

Étiquettes associées:
c++
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal