Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Funções Lambda | Alguns Tópicos Avançados
Funções em C++

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:

Concisão
expand arrow

Funções lambda permitem escrever código curto e conciso. São ideais para operações que podem ser expressas em poucas linhas.

Escopo Local
expand arrow

Elas podem capturar variáveis do escopo ao redor, permitindo o uso de variáveis da função pai dentro da lambda.

Flexibilidade
expand arrow

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

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

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 multiplier por referência [&multiplier];

  • O tipo de retorno -> int especifica que a função lambda retorna um inteiro;

  • A lambda é imediatamente invocada com o argumento 5, e o resultado é armazenado na variável result.

question mark

Qual é o propósito de uma cláusula de captura em uma função lambda?

Selecione a resposta correta

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 4. Capítulo 4

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 4. Capítulo 4
some-alt