Lambdas com Parâmetros
Parte da seção Lógica & Fluxo do Journey de C++ da Coddy. Lição 43 de 56.
Agora que você entende a sintaxe básica de lambdas, vamos tornar as lambdas mais úteis adicionando parâmetros. Assim como funções regulares, as lambdas podem aceitar valores de entrada para trabalhar.
Para adicionar parâmetros a uma lambda, coloque-os dentro dos parênteses após a cláusula de captura:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // Imprime: Sum: 8A sintaxe de parâmetros funciona exatamente como parâmetros de função regulares - você especifica o tipo seguido pelo nome do parâmetro. Você pode ter múltiplos parâmetros separados por vírgulas, exatamente como mostrado acima.
Você também pode chamar imediatamente uma lambda com parâmetros sem armazená-la:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // Imprime: Product: 28Essa capacidade de aceitar parâmetros torna as lambdas muito mais flexíveis e reutilizáveis, permitindo que você crie pequenas funções que podem processar diferentes valores de entrada cada vez que são chamadas.
Desafio
FácilCrie um programa que demonstre expressões lambda com parâmetros, construindo uma calculadora simples que realiza diferentes operações matemáticas. Este desafio testará sua compreensão de como definir expressões lambda que aceitam valores de entrada e trabalham com eles.
As seguintes entradas serão fornecidas:
- Dois inteiros
num1enum2representando os números para os cálculos - Um caractere
operationrepresentando a operação matemática a ser realizada
Seu programa deve:
- Criar uma expressão lambda chamada
addque receba dois parâmetros inteiros e imprima sua soma no formatoSum: [result] - Criar uma expressão lambda chamada
subtractque receba dois parâmetros inteiros e imprima sua diferença no formatoDifference: [result] - Criar uma expressão lambda chamada
multiplyque receba dois parâmetros inteiros e imprima seu produto no formatoProduct: [result] - Ler os dois números e o caractere da operação da entrada
- Com base no caractere da operação, chamar a lambda apropriada com os dois números
O caractere da operação será um dos seguintes:
+para adição (chame a lambdaadd)-para subtração (chame a lambdasubtract)*para multiplicação (chame a lambdamultiply)
Use o seguinte formato exato de saída com base na operação:
Para adição:
Sum: [result]Para subtração:
Difference: [result]Para multiplicação:
Product: [result]Lembre-se de que os parâmetros de uma lambda são definidos dentro dos parênteses após a cláusula de captura, usando a mesma sintaxe dos parâmetros de funções comuns. Armazene cada lambda em uma variável usando a palavra-chave auto e, em seguida, chame a lambda apropriada com base no caractere da operação de entrada usando uma instrução if-else ou uma instrução switch.
Experimente você mesmo
#include <iostream>
using namespace std;
int main() {
// Ler entrada
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: Criar expressões lambda para as operações de somar, subtrair e multiplicar
// TODO: Usar uma instrução if-else ou switch para chamar a lambda apropriada com base na operação
return 0;
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Lógica & Fluxo
1Ponteiros e Memória
O que é um Ponteiro?Operador de EndereçoOperador de DesreferenciaçãoPonteiros NulosPonteiros e ArraysMemória Dinâmica com 'new'Liberando Memória com 'delete'Recapitulação - Prática com Ponteiros4Mapas (Pares Chave-Valor)
Introdução ao std::mapCriando um MapaAcessando e Modificando ValoresVerificando ChavesRemovendo ParesIterando sobre um MapaRecapitulação - Frequência de Palavras7Funções Avançadas
Passagem por ReferênciaIntrodução a Expressões LambdaLambdas com ParâmetrosLambdas com Valores de RetornoIntrodução à RecursãoFatorial RecursivoOrdenação com Lambda2Vetores (Arrays Dinâmicos)
Introdução ao std::vectorCriando um VetorAdicionando ElementosAcessando ElementosTamanho do VetorIterando com um Loop ForLoop For Baseado em IntervaloRemovendo ElementosRecapitulação - Operações com Vetores3Projeto: Ferramenta de Lista de Tarefas
Visão Geral do ProjetoAdicionando uma TarefaPratique por conta própria: Compilador de C++ online