En passant des paramètres via la liste de capture, les expressions lambda peuvent accéder à des variables externes. En prenant les paramètres de type int comme exemple, la liste de capture est [x](int y), où x est une variable externe et y est un paramètre d'expression lambda. Grâce à cette technique, les expressions lambda peuvent être utilisées dans divers scénarios, tels que la sommation de tableau, où la fonction std::accumulate accumule les éléments du tableau dans une variable avec une valeur initiale de 0, qui est accumulée un par un via l'expression lambda.
L'expression Lambda est une fonction anonyme simplifiée qui est largement utilisée en C++ pour définir des fonctions en ligne de manière concise et efficace. Pour qu'une expression lambda accède aux variables externes, une liste de capture est utilisée. Il en va de même pour le passage des paramètres.
La liste de capture précède la liste des paramètres d'expression lambda et est entourée de [
et ]
. Il peut capturer des variables locales et des variables externes. Pour transmettre des paramètres, vous devez spécifier le type et le nom du paramètre dans la liste de capture. [
和 ]
括起来。它可以捕获局部变量和外部变量。要传递参数,需要在捕获列表中指定参数类型和名称。
// 捕获列表传递 int 参数 auto lambda = [x](int y) { return x + y; };
上面的示例定义了一个 lambda 表达式 lambda
,它接收一个名为 y
的 int
型参数,并且可以访问外部局部变量 x
。
考虑一个需要将数组中的所有元素求和的场景。可以使用带有捕获列表传递参数的 lambda 表达式来简化此操作:
#include <vector> #include <algorithm> int main() { std::vector<int> numbers = {1, 2, 3, 4, 5}; int sum = std::accumulate(numbers.begin(), numbers.end(), 0, [](int x, int y) { return x + y; }); std::cout << "Sum: " << sum << std::endl; return 0; }
在这个例子中,std::accumulate
函数使用提供的 lambda 表达式将数组 numbers
中的元素逐个累加到初始值为 0
的 sum
中。lambda 表达式接收两个整数参数 x
和 y
,并返回它们的和。
=
表示 by value,用 &
rrreeelambda
qui reçoit un paramètre de type int
nommé y
et peut accéder à la variable locale externe x
. std::accumulate
utilise l'expression lambda fournie pour convertir le tableau numbers sont accumulés un par un dans <code>sum
avec une valeur initiale de 0
. Une expression lambda prend deux paramètres entiers x
et y
et renvoie leur somme.
=
pour représenter par valeur et &
pour représenter par référence. 🎜🎜🎜Remarque sur la durée de vie des variables : 🎜 Une expression lambda ne peut accéder qu'aux variables locales qui existent pendant sa durée de vie. 🎜🎜🎜Évitez de capturer des objets volumineux : 🎜La capture d'objets volumineux peut entraîner des problèmes de performances car ils nécessitent de la mémoire supplémentaire. 🎜🎜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!