Una lambda es una función anónima que puedes definir in situ, sin la necesidad de crear una función separada. Las lambdas son especialmente útiles cuando necesitas pasar una función como argumento a otra función, como std::for_each
, std::transform
, std::sort
, entre otros.
Ejemplo 1: Uso de Lambdas en Algoritmos de la STL:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numeros = {5, 2, 8, 1, 9, 3};
// Ordenar el vector utilizando una lambda
std::sort(numeros.begin(), numeros.end(), [](int a, int b) {
return a < b;
});
// Imprimir los números ordenados
for (int num : numeros) {
std::cout << num << " ";
}
return 0;
}
Aquí, [](int a, int b) { return a < b; }
es la lambda que define una función anónima que toma dos enteros a
y b
como argumentos y devuelve un valor booleano basado en la comparación. Esta función se utiliza como criterio de orden en el algoritmo std::sort
.
std::sort(numeros.begin(), numeros.end(), [](int a, int b) {
return a < b;
});
Ejemplo 2: Uso de Lambdas en Transformaciones:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numeros = {1, 2, 3, 4, 5};
// Duplicar cada número utilizando una lambda
std::transform(numeros.begin(), numeros.end(), numeros.begin(), [](int num) {
return num * 2;
});
// Imprimir los números duplicados
for (int num : numeros) {
std::cout << num << " ";
}
return 0;
}
En este caso, [](int num) { return num * 2; }
es la lambda que define una función anónima que toma un entero num
como argumento y devuelve el resultado de multiplicar num
por 2. Esta función se utiliza para transformar cada elemento en el vector numeros
.
std::transform(numeros.begin(), numeros.end(), numeros.begin(), [](int num) {
return num * 2;
});
Ejemplo 3: Uso de Lambdas en Funciones de Orden Superior:
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
// Función que aplica una función a cada elemento de un vector
void aplicarFuncion(std::vector<int>& datos, std::function<int(int)> funcion) {
for (int& num : datos) {
num = funcion(num);
}
}
int main() {
std::vector<int> numeros = {1, 2, 3, 4, 5};
// Utilizar una lambda para elevar al cuadrado
aplicarFuncion(numeros, [](int num) {
return num * num;
});
// Imprimir los números al cuadrado
for (int num : numeros) {
std::cout << num << " ";
}
return 0;
}
En este ejemplo, [](int num) { return num * num; }
es la lambda que define una función anónima que toma un entero num
como argumento y devuelve el resultado de elevar num
al cuadrado. Esta función se pasa como argumento a la función aplicarFuncion
.
aplicarFuncion(numeros, [](int num) {
return num * num;
});
Pueder ir al artículo principal:
Códigos Sencillos hechos en C++
I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.