Il définit une expression Lambda, qui est essentiellement une fonction sans nom. Il a la liste de paramètres (int x, const std::vector<int>&vect)
et un corps de fonction { ... }
. Mais il a également une liste de capture au début [&]
. Si vous voulez accéder à une variable (qui n'est pas un paramètre) du corps de l'expression lambda, vous devez faire l'expression "prendre la variable avec lui-même", de sorte que la variable puisse être utilisée plus tard quand l'expression lambda sera réalisé.
Vous pouvez soit fournir une liste de variables, soit utiliser "tout" pour les capturer toutes. [&]
signifie capturer tous par référence, et [=]
signifierait capturer tous par valeur. (Si vous utilisez [&]
, notez que le corps lambda utilisera la valeur de la variable au moment de l'exécution de lambda, et non la valeur qui était valide lorsque vous avez créé le lambda! une copie de la valeur, seulement une référence à celle-ci.)
C'est une liste de capture pour un lambda (cf http: //en.cppreference.com/w/cpp/langue/lambda) –
Ce n'est pas une fonction mais un lambda. Vous devriez lire sur ceux – Hayt
Juste un heads-up, j'ai fermé [this] (http://stackoverflow.com/questions/12262019/c-operator) comme une dupe de cette question. IMHO les réponses ici sont plus détaillées. – NathanOliver