10 exemplos de uso de Funções Lambda em C++

Lambdas resolvem um problema de legibilidade, expressividade e praticidade.


10 exemplos de uso de Funções Lambda em C++

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: [](){};


Exemplo 1

Isso não faz nada, mas é a forma mais básica de compilar sem erro.

#include <iostream>

int main(){
  [](){};
  return 0;
}

Exemplo 2

Atribuindo o retorno da Lambda à uma variável

auto a = [](){};

Exemplo 3

Inserindo conteúdo no corpo da lambada

auto b = [](){
  std::cout << "I \u2764 Lambda!\n";
};


Exemplo 4

Imprimindo o conteúdo da lambda

auto c = [](){
  std::cout << "I \u2764 Lambda!\n";
};

c();

Exemplo 5

Passando parametro para Lambda

auto d = []( const char * s ){
  std::cout << s;
};
d("I \u2764 Lambda!\n");

Exemplo 6

Retornando tipo definido

auto e = []()->float {
  return 3.6f;
}; std::cout << "0.9 + e = " << 0.9f + e() << '\n';

Exemplo 7

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


Exemplo 8

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';


Exemplo 9

Chamando com parametros diretos

int n = [] (int x, int y) { return x + y; }(5, 4);
std::cout << n << '\n';

Exemplo 10

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++ !

Acompanhe o cpp::daily

Deseja aprender C++ e criar seus programas Gráficos e para Terminal com portabilidade para Linux e Windows?

Então se inscreva nos nossos Cursos de C++ Moderno . Você aprender criar:

Acesse o endereço:

https://terminalroot.com.br/cpp/ e saiba mais!

Links Úteis


cpp cppdaily


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo

Artigos Relacionados




Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!