Lorsqu'une expression lambda capture une variable d'une portée englobante, le type de retour est déduit du type de la variable capturée. Si plusieurs variables sont capturées, le type de retour est déduit conjointement de leurs types. Ce mécanisme permet de déduire le type de retour d'une expression lambda et gère automatiquement différents types de conteneurs en cas de besoin.
Mécanisme de déduction de type pour les expressions lambda dans les fonctions C++
Les expressions lambda sont un moyen pratique de définir des fonctions anonymes en C++. Cette expression permet la déduction de type au sein d’une fonction pour son type de retour.
Mécanisme de déduction de type
Lorsqu'une expression lambda capture une variable de sa portée englobante, le type de retour déduit sera le même que le type de la variable capturée. Par exemple :
int main() { int x = 10; auto lambda = [x] { return x; }; int result = lambda(); }
Dans cet exemple, l'expression lambda capture la variable x
, donc son type de retour est déduit être int
, et elle peut être stockée dans int
variable. x
,因此其返回类型推导出为 int
,并且可以将其存储在 int
变量中。
如果捕获了多个变量
如果 lambda 表达式捕获了多个变量,则其返回类型将由捕获的变量的类型共同推导出来。例如:
struct Point { int x; int y; }; int main() { Point point = {1, 2}; auto lambda = [point] { return point.x + point.y; }; int result = lambda(); }
在此示例中,lambda 表达式捕获结构体 Point
的实例 point
,因此其返回类型推导出为 int
,并且可以将其存储在 int
变量中。
实战案例
以下是很好的实战案例,展示了 lambda 表达式的类型推导:
#include <iostream> #include <vector> template <typename T> void print_vector(const std::vector<T>& v) { for (auto& element : v) { std::cout << element << " "; } std::cout << std::endl; } int main() { std::vector<int> v1 = {1, 2, 3}; std::vector<double> v2 = {1.5, 2.5, 3.5}; print_vector(v1); print_vector(v2); }
在此示例中,print_vector
函数使用 lambda 表达式来推导出 T
point
de la structure Point
, donc son type de retour est déduit être int code> , et peut être stocké dans une variable <code>int
. 🎜🎜🎜Cas pratique🎜🎜🎜Ce qui suit est un bon cas pratique montrant la dérivation de type des expressions lambda : 🎜rrreee🎜Dans cet exemple, la fonction print_vector
utilise une expression lambda pour déduireT et gère automatiquement différents types de conteneurs. Cette fonction déduira le type de retour correct et permettra d'imprimer le contenu du conteneur de différents types. 🎜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!