Do czego konkretnego przydają się lambdy?
Jeszcze nie udało mi się znaleźć takiego zastosowania, gdzie przyśpieszyłaby prace / zmniejszyła objętość kodu / jakieś cuda zrobiła.
Do obfuskowania kodu ;]
przydaje się to przy operacji na algorytmach STla do definiowania predykatów. Nie trzeba umieszczać osobno funkcji tylko się piszę wszystko w jednym miejscu.
Ja stosuję lambdy tam, gdzie potrzebuję uzyskać jakąś funkcjonalność, ale sama funkcjonalność nie nadaje się zbytnio na osobną metodę. (Grunt żeby taka funkcja była stosunkowo mała). Lubię stosować lambdy w funkcjach z algorithm.
Okej, rozumiem :D
Teraz tylko mała prośba, o jakiś prosty przykład.
std::string foo = "abcdeasdasd";
const char buzz = 'a';
int result = std::count_if(foo.cbegin(), foo.cend(), [&](const char letter)->bool { return letter == buzz; });
Okej, dzięki :D
Labdy przydają się kiedy chciałbyś wewnątrz funkcji wykonać jakieś zachowanie zdefiniowane później przez użytkownika. Predykaty w sortowaniu to jest jakiśtam przykład takiego zachowania. Innym przykładem może być coś takiego:
Piszesz funkcję trawersującą drzewo katalogów w systemie plików, która przyjmuje dwa argumenty: funkcję zwracającą boolean która mówi o ty czy dany plik nas "initeresuje" oraz funkcję która robi "coś" z plikuiem.
Jeśli funkcje które chcesz tam podać jako argumenty są trywialne to może się okazać że warto użyć tam lambdy.