Il définit une expression Lambda, qui est essentiellement une fonction sans nom. Il a liste des paramètres de l' (int x, const std::vector<int>&vect)
et un corps de la fonction { ... }
. Mais il a aussi une liste de capture dans le début [&]
. Si vous souhaitez accéder à une variable (qui n'est pas un paramètre) du corps de la lambda expression, vous avez à faire de l'expression "prendre la variable avec elle-même", de sorte que la variable peut être utilisée plus tard, quand l'expression lambda sera exécuté.
Vous pouvez soit fournir une liste de variables, ou de l'utilisation de "tous" pour capturer tous. [&]
signifie s'emparer de référence, et [=]
signifierait pour la capture de la valeur.
(Si vous utilisez [&]
, à noter que le corps de lambda va utiliser la valeur de la variable au moment de la lambda est exécuté, et non pas la valeur qui était en vigueur lors de la création de la lambda! C'est parce que vous ne disposez pas d'une copie de la valeur, seulement une référence.)