Lambdas en C ++

Lambdas en C ++
"Con la ayuda de ilustraciones, discutiremos las funciones de C ++ Lambda en este artículo.

Podemos definir instancias de método anónimo en las declaraciones Lambda de C ++, que luego podrían utilizarse en línea o suministrarse como parámetros. Dado que no tendremos que anular el operador en una clase o estructura diferente, son mucho más efectivos."

Sintaxis de la función Lambda

El introductor Lambda [] en este caso representa el comienzo de la declaración Lambda, y la lista de argumentos [] es idéntica al operador () de un método estándar.

Ejemplo no 1

En este caso, hemos compilado un código básico de instrucción Lambda C ++ que muestra el nombre de Alemania.

#incluir
usando el espacio de nombres STD;
int main ()
país automático = [] ()
cout << "Germany";
;
país();
regresar 0;

Incluiremos el archivo de encabezado requerido y el espacio de nombres estándar al comienzo del programa. Luego comenzamos la codificación dentro de la función Main (). Crearemos un método Lambda utilizando la palabra clave "Auto". Asignaremos la variable "país" al método Lambda. Luego, mediante el uso de la variable de país y el operador (), hemos invocado el método Lambda. Además, hemos utilizado la declaración "Cout" para imprimir el nombre del país. Invocemos la función Lambda. Al final, solo entramos en el comando "return 0".

Ejemplo no 2

Las declaraciones de Lambda también requerirían argumentos, al igual que un método estándar. Aquí, hemos construido un método Lambda que muestra la suma de dos números. El método Lambda se invocó con dos parámetros enteros.

#incluir
usando el espacio de nombres STD;
int main ()
Auto add = [] (int x, int y)
cout << "Sum of two numbers = " << x + y;
;
Agregar (250, 69);
regresar 0;

Comenzamos el programa incluyendo la biblioteca . Luego utilizamos el espacio de nombres estándar. Llamaremos a la función principal (). Ahora creamos una función lambda de "agregar". Aquí pasamos dos variables como argumentos de esta función. La instrucción "cout" se está utilizando para imprimir la suma de estos valores especificados. En el siguiente paso, llamamos al método Lambda. Este método contiene dos enteros como parámetros. Por último, tenemos que ingresar el comando 'return 0'.

Ejemplo no 3

Aquí, hemos construido un método Lambda para determinar tanto el promedio de 2 números como la suma de 2 números. Al proporcionar "S" como el tercer parámetro a Main (), podemos calcular la suma de dos números. Incluso si la Lambda proporciona un número aleatorio en este caso, la conversión de doble tipo se realiza directamente. El promedio se calcula utilizando una cadena diferente como parámetro:

#incluir
usando el espacio de nombres STD;
int main ()
auto op = [] (int i, int j, string op) -> double
if (op == "s")
regresar i + j;

demás
return (i + j) / 2.0;

;
int n_1 = 11;
int n_2 = 21;
auto s = op (n_1, n_2, "s");
cout << "Sum of two numbers= " << s << endl;
promedio automático = op (n_1, n_2, "promedio");
cout << "Average = " << average;
regresar 0;

Vamos a integrar el módulo para las funcionalidades de entrada y salida. La función Lambda se habrá creado en el siguiente paso. Aquí la función Lambda "OP" se aplica mediante su tipo de retorno explícito "Double". Esta función lambda devuelve la suma o el promedio de los valores. Proporcionaremos dos variables que tienen un tipo de datos enteros y una cadena como parámetros de la función Lambda.

Además, hemos aplicado la declaración "si". Si el valor de la variable "OP" es igual a la suma de los números. Luego devuelve el valor agregando ambos números. De lo contrario, devuelve el promedio dividiendo la suma de los números por 2. Inicializamos dos nuevas variables y establecemos sus valores. Usamos la declaración de "cout" para mostrar la suma. Ahora para obtener el promedio de los valores requeridos, aplicamos la función lambda "promedio". Hemos dado a los enteros como argumentos a esta función Lambda. La declaración "cout" se utilizará para mostrar el valor promedio. Para terminar el código, emplearemos "Retorno 0".

Ejemplo no 4

Por defecto, los métodos Lambda no pueden recuperar las variables de la función sangrada. Utilizamos la declaración de captura para obtener acceso a esos atributos. Esto es idéntico a invocar un método por valor. Cuando se construye la lambda en este caso, el valor original se toma. La variable incluida dentro del argumento Lambda solo se leerá en este punto; No se puede cambiar.

El siguiente es un ejemplo de una función lambda simple con captura por valor:

Por lo tanto, la función Lambda tiene accesibilidad a la variable int "n" debido a la "S" inicial. Como int "n" no se recuperará del cuerpo lambda a menos que lo eliminemos de la cláusula de captura, entonces encontraremos un error.

#incluir
usando el espacio de nombres STD;
int main ()
int inicial_s = 389;
Auto add_to_s = [inicial_s] (int n)
devolver inicial_s + n;
;
int final_s = add_to_s (45);
cout << "389 + 45 = " << final_s;
regresar 0;

En primer lugar, para los procesos de entrada y salida, se incluirá el archivo de encabezado. Junto con este espacio de nombres estándar se agregará. Ahora llamamos a la función principal (). Dentro del cuerpo de la función Main (), inicializamos una variable "Initial_S". Especificamos el valor "389" a esta variable. Luego capturamos la variable "Initial_S" por su valor. Por lo tanto, hemos estado utilizando la función Lambda de "add_to_s". Pasaremos dos variables como parámetro a la función Lambda.

El primer parámetro muestra la variable "Initial_S", y el segundo parámetro muestra la variable "n". La suma se mantendrá en una variable "final_s". El tipo de datos de esta variable es un entero. Antes de agregar el comando "return 0", tenemos que utilizar la declaración "Cout". La declaración "cout" muestra el valor resultante.

Conclusión

La Guía de declaraciones Lambda de C ++ ha concluido. La nueva noción en C ++, la ejecución en línea, es muy útil cada vez que necesitamos ejecutar una breve pieza de código. Además, los lambdas pueden declararse genéricos y aplicarse a cualquier tipo de datos. Este artículo tiene cuatro instancias separadas que hemos implementado completamente. La función lambda se usa sin ningún argumento en primera instancia. Proporcionamos el método Lambda una variedad de parámetros en el segundo ejemplo. Del mismo modo, hemos utilizado el tipo de retorno explícito del método Lambda en el tercer escenario. La función lambda y la cláusula de captura se han utilizado en la última.