O que é uma expressão lambda em C++ e quando usá-la?
Olá, colegas! Comecei a estudar C++11 e constantemente me deparo com o termo "expressão lambda" (lambda expression). Li a documentação, mas não entendo completamente o que é e, principalmente, para que serve.
Aqui está um exemplo que encontrei em um tutorial:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
int multiplier = 3;
// O que está acontecendo aqui?
std::for_each(numbers.begin(), numbers.end(), [multiplier](int n) {
std::cout << n * multiplier << " ";
});
return 0;
}
Eu entendo que `std::for_each` aplica uma função a cada elemento, mas a construção `[multiplier](int n) { ... }` me confunde. Por que não posso simplesmente escrever uma função normal ou um functor? Qual é a vantagem das lambdas?
Também não entendo o que significam os colchetes `[]`. Em alguns exemplos eles estão vazios, em outros com variáveis dentro. E quando devo usar o