Buenos días a todos, estoy siguiendo un tutorial para C++11 y me he topado con las expresiones lambda, las cuales no entiendo en aboluto :P
Este es el código:
auto found = std::find_if(mChildren.begin(), mChildren.end(),
[&] (Ptr& p)->bool{return p.get() == &node; }); //Aqui esta la maldita xDD
El principio lo comprendo todo, pero cuando llego al tercer argumento de std::find_if literalmente me pierdo. Agradecería si alguien me pudiera explicar paso a paso lo que significa cada cosa, porque los tutoriales que he visto no los entiendo tampoco.
Un saludo y gracias de antemano.
http://www.cprogramming.com/c++11/c++11-lambda-closures.html (http://www.cprogramming.com/c++11/c++11-lambda-closures.html)
El primer parametro es el inicio, el segundo el final y el tercero es un puntero a la función que vas a usar para hacer las comparaciones.
Lo que pasa esque declarar una función aparte para luego no usarla nunca más... Las funciones lambda permiten declarar esas funciones "inline", ahorrandote escritura y espacio.
Voy a necesitar un tiempo para entenderlo todo bien, aunque el artículo es muy bueno, muchas gracias :D
Un saludo y gracias por todo