Académique Documents
Professionnel Documents
Culture Documents
• Expressivité : Les fonctions lambda permettent de définir la logique d'une fonction directement dans le
contexte où elle est utilisée, ce qui peut rendre le code plus expressif et faciliter la compréhension du
comportement attendu.
• Flexibilité : Les fonctions lambda sont flexibles et peuvent être utilisées comme des arguments de fonction,
des variables locales ou des membres de classe, ce qui permet de les utiliser dans une grande variété de
situations et de scénarios.
• Captures de variables : Les fonctions lambda peuvent capturer des variables du contexte où elles sont définies,
ce qui leur permet d'accéder à ces variables même lorsque la portée dans laquelle elles ont été définies a expiré.
Cela permet de créer des fonctions avec des comportements dépendant de l'état du contexte.
#include <iostream>
#include <vector>
#include<algorithm>
using namespace std;
int main() {
return 0;
}
Exemples de capture
std::cout << "La somme de " << x << " et " << y << " est : " <<
sum << std::endl;
return 0;
}
Exercice 2:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
// Déclaration de la fonction lambda
max_element de la bibliothèque algorithm
auto maxElement = [](int arr[], int size) {
permet de chercher la valeur maxi d’un tableau
return *max_element(arr, arr + size);
};
#include <iostream>
int main() {
// Déclaration de la fonction lambda
auto isEven = [](int num) { //[] capture toutes les variables
return num % 2 == 0;
};
std::cout << "Le nombre " << x << " est-il pair ? " << (result ? "Oui" : "Non") << std::endl;
return 0;
}
#include <iostream>
#include <vector> Recherche de la valeur minimal des éléments d’un vecteur
#include <algorithm>
using namespace std;
int main() {
vector<int> v = {5, 8, 2, 3, 3, 4, 12};
int minval = 5;
if (x != v.end()) {
std::cout << "La valeur minimale de la liste est : " << *x << std::endl;
} else {
std::cout << "Aucune valeur minimale trouvée dans la liste." << std::endl;
}
return 0;
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Lambda {
public:
bool operator()(int i1, int i2) const {
return i1 < i2;
}
};
int main() {
vector<int> v = {5, 8, 2, 3, 3, 4, 12}; // Modification des valeurs du vecteur v
Lambda lambda; // Création d'une instance de la classe Lambda
return 0;
}
Exemple #include <iostream>
int main() {
int x = 10;
int y = 20;
return 0;
}
On peut combiner un passage par valeur et un autre par référence
#include <iostream>
int main() {
int x = 10;
int y = 20;
return x + y;
};
// Modification des valeurs de x et y
x = 30;
y = 40;
// Utilisation de la classe lambda pour filtrer les nombres entre min_val et max_val
vector<int> filtered_nums;
auto lambda_filter = lambda(min_val, max_val);
for (int num : nums) {
if (lambda_filter(num)) {
filtered_nums.push_back(num);
}
}
return 0;
}
#include <iostream>
#include <vector>
class A {
public:
void f() {
auto l = [this](int i) {
return i > minval;
};
// Exemple d'affichage de valeurs
minval = 5;
std::cout << "minval : " << minval << std::endl;
std::cout << "Résultat de la lambda pour i=10 : " << l(10) << std::endl;
}
private:
std::vector<int> data;
int minval;
};
int main() {
A obj; // Création d'un objet de la classe A
return 0;
}