Qu'est-ce qu'une expression lambda en C++ et quand faut-il l'utiliser ?
Bonjour à tous ! J'apprends le C++ et je vois souvent dans le code de mes collègues quelque chose comme ceci :
```cpp
std::vector numbers = {5, 2, 8, 1, 9};
std::sort(numbers.begin(), numbers.end(), [](int a, int b) { return a < b; });
```
Ou encore comme ça :
```cpp
std::for_each(numbers.begin(), numbers.end(), [](int& x) { x *= 2; });
```
Je comprends que ce sont des fonctions anonymes, mais je ne maîtrise pas complètement le sujet. Dans la documentation, on parle "d'expressions lambda", mais les explications sont un peu complexes. J'ai plusieurs questions :
1. Qu'est-ce qu'une expression lambda en termes simples ? En quoi diffère-t-elle d'une fonction ordinaire ?
2. À quoi servent les crochets `[]` au début ? Que peut-on y mettre ?
3. Quand est-il préférable d'utiliser une lambda, et quand une fonction ordinaire ou un foncteur ?
4. Comment capturer correctement les variables ? J'ai vu `[=]`, `[&]`, `[`
No answers yet.
Connectez-vous pour laisser une réponse