je lis here et aussi here et des exemples sur cpluplus.com Et je ne comprends toujours pas comment cela fonctionnesyntaxe Lambda avec des algorithmes
ce qui me brouille au plus comment lambdas fonctionnent avec des algorithmes de _Si comme copy_if qu'ils don Conteneurs de référence dans le corps
std::vector<int> foo = {25,15,5,-5,-15};
std::vector<int> bar (foo.size());
// copy only positive numbers:
auto it = std::copy_if (foo.begin(), foo.end(), bar.begin(), [](int i)
{return !(i<0);})
ne fait pas référence à l'objet vectoriel foo dans le corps. alors comment il effectue l'action souhaitée?
De plus, je ne comprends pas quelle est la différence beetween la capture d'une variable et en passant comme paramètre
J'ai aussi essayé de mon propre exemple:
vector<unsigned long>v2(10);
for(unsigned long i=0;i<v2.size();i++)
v2[i]=10-i;
v2.erase(remove_if(v1.begin(), v1.end(),[](unsigned long n) {
return n%2==1; }),v2.end());//remove odd numbers
Il compile (MVS 2010 avec Intel Compositeur 14) mais produit des déchets et des erreurs d'assertion.
Il ne fait pas référence le vecteur parce qu'il passe ses valeurs individuelles 1 à la fois dans votre fonction lambda pour vous de vérifier. – CoffeeandCode
comment ça marche. ce n'est pas clair pour moi –
Il pourrait le faire comme bon lui semble. Il pourrait simplement faire un simple 'pour (taille_t n = 0; n
CoffeeandCode