Funções Lambda
Deslize para mostrar o menu
Funções lambda, ou funções anônimas, são um recurso que permite criar pequenas funções sem nome diretamente no seu código. Elas são especialmente úteis quando você precisa de uma função simples por um curto período de tempo e não deseja definir uma função nomeada separada.
Funções lambda são úteis por vários motivos:
Funções lambda permitem escrever código curto e conciso. São ideais para operações que podem ser expressas em poucas linhas.
Elas podem capturar variáveis do escopo ao redor, permitindo o uso de variáveis da função pai dentro da lambda.
Lambdas podem ser passadas como argumentos para outras funções, tornando-as úteis para funções como std::for_each, std::sort, etc.
Como criar uma função lambda?
Você pode usar a seguinte sintaxe para criar uma função lambda.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
Uma cláusula de captura em uma função lambda permite especificar quais variáveis do escopo externo (fora da função lambda) podem ser acessadas e utilizadas dentro da função lambda. Existem 3 tipos comuns de cláusulas de captura:
-
Não capturar nada
[]: a função lambda não pode acessar nenhuma variável do escopo externo; -
Capturar variáveis específicas por valor
[var1, var2, ...]: a função lambda pode acessar variáveis específicas do escopo externo por valor; -
Capturar variáveis específicas por referência
[&var1, &var2, ...]: a função lambda pode acessar variáveis específicas do escopo externo por referência.
main.cpp
1234567891011121314#include <iostream> int main() { int multiplier = 2; // Lambda function capturing `multiplier` by reference // With explicit return type (`int`) int result = [&multiplier](int num) -> int { return num * num * multiplier; }(5); // Invoking the lambda with argument 5 std::cout << result << std::endl; }
A função é construída da seguinte forma:
-
A função lambda captura a variável
multiplierpor referência[&multiplier]; -
O tipo de retorno
-> intespecifica que a função lambda retorna um inteiro; -
A lambda é imediatamente invocada com o argumento
5, e o resultado é armazenado na variávelresult.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo