Lambdas resolvem um problema de legibilidade, expressividade e praticidade. Falamos mais sobre elas e com exemplos e detalhes no Curso de C++ Moderno Avançado . Mas nesse artigo vamos mostrar 10 formas de você utilizar ela no seu código.
A sintaxe dela se resume em: [](){};
Isso não faz nada, mas é a forma mais básica de compilar sem erro.
#include <iostream>
int main(){
[](){};
return 0;
}
Atribuindo o retorno da Lambda à uma variável
auto a = [](){};
Inserindo conteúdo no corpo da lambada
auto b = [](){
std::cout << "I \u2764 Lambda!\n";
};
Imprimindo o conteúdo da lambda
auto c = [](){
std::cout << "I \u2764 Lambda!\n";
};
c();
Passando parametro para Lambda
auto d = []( const char * s ){
std::cout << s;
};
d("I \u2764 Lambda!\n");
Retornando tipo definido
auto e = []()->float {
return 3.6f;
}; std::cout << "0.9 + e = " << 0.9f + e() << '\n';
Passando variáveis já existentes
int x, y; x = y = 0;
auto f = [ x, &y ]{
++y;
std::cout << "x e y = " << x << " e " << ++y << '\n';
}; f();
// como y é referência, o valor é alterado
// o x é read-only
// Saida: x e y = 0 e 2
Executando dentro do std::remove_if
e deixando o CPF(123.456.789-00) só com números
std::string s("192.168.195-10");
std::vector<std::string> cpf;
for (int i = 0; i < s.length() ; i++) {
cpf.push_back( s.substr(i, 1) );
}
cpf.erase( std::remove_if( cpf.begin() , cpf.end(), []( std::string h )->bool{
return ( h == "-" || h == "." );
} ) , cpf.end() );
Para ver a saída:
for( auto z : cpf ){ std::cout << z; }; std::cout << '\n';
Chamando com parametros diretos
int n = [] (int x, int y) { return x + y; }(5, 4);
std::cout << n << '\n';
Capturando a cláusula como referência
auto indices = [&]( std::string index ){
std::cout << index << '\n';
};
indices("Iniciando os trabalhos ...");
Por hoje é só, são pequenas doses diárias que farão sempre nos manter antenado com o C++ !
Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:
Acesse o endereço: