3 votes

Quelqu'un peut-il m'expliquer ce que signifie [](int i){ return i % 2 == 0 ; } ?

Dans l'exemple de code suivant de l'algorithme STL std::all_of ,

Que signifie "[](int i){ return i % 2 == 0 ; }" ?

int main() { 

    std::vector<int> v{10, 2, 4, 6}; 

    if (std::all_of(v.begin(), v.end(), [](int i){ return i % 2 == 0; })) { 
        std::cout << "All numbers are even\n"; 
    } 
    else{
        std::cout << "All numbers are not even\n"; 
    }
}

2voto

gsamaras Points 9567

C'est un fonction lambda qui vérifie si i est égal ou non. Il retournera vrai si i est pair, sinon faux.

Sa logique est équivalente à ceci :

#include <algorithm>
#include <iostream>

bool isEven(int i) {
  return i % 2 == 0;
}

int main() { 

    std::vector<int> v{10, 2, 4, 6}; 

    if (std::all_of(v.begin(), v.end(), isEven)) { 
        std::cout << "All numbers are even\n"; 
    } 
    else{
        std::cout << "All numbers are not even\n"; 
    }
}

Sortie :

Tous les nombres sont pairs


Note : Cette méthode lambda est une fonction libre, et elle fait no capturer quoi que ce soit.

PS : Cette méthode lambda n'a rien à voir avec la STL.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X