Wyrażenia lambda z parametrami
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 43 z 56.
Skoro znasz już podstawową składnię lambd, sprawmy, by były bardziej użyteczne, dodając parametry. Podobnie jak zwykłe funkcje, lambdy mogą przyjmować wartości wejściowe, na których będą działać.
Aby dodać parametry do lambdy, umieść je w nawiasach po klauzuli przechwytywania:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // Wypisuje: Sum: 8Składnia parametrów działa dokładnie tak samo jak w przypadku zwykłych parametrów funkcji — podajesz typ, a następnie nazwę parametru. Możesz mieć wiele parametrów oddzielonych przecinkami, tak jak pokazano powyżej.
Możesz też od razu wywołać lambdę z parametrami, bez jej zapisywania:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // Wypisuje: Product: 28Ta możliwość przyjmowania parametrów sprawia, że lambdy są znacznie bardziej elastyczne i wielokrotnego użytku, pozwalając tworzyć małe funkcje, które mogą przetwarzać różne wartości wejściowe przy każdym wywołaniu.
Wyzwanie
ŁatwyUtwórz program, który demonstruje wyrażenia lambda z parametrami, budując prosty kalkulator wykonujący różne operacje matematyczne. To wyzwanie sprawdzi, czy rozumiesz, jak definiować wyrażenia lambda, które przyjmują wartości wejściowe i wykonują na nich operacje.
Podane zostaną następujące dane wejściowe:
- Dwie liczby całkowite
num1inum2, reprezentujące liczby używane w obliczeniach - Znak
operation, reprezentujący operację matematyczną do wykonania
Twój program powinien:
- Utworzyć wyrażenie lambda o nazwie
add, które przyjmuje dwa parametry całkowite i wypisuje ich sumę w formacieSum: [result] - Utworzyć wyrażenie lambda o nazwie
subtract, które przyjmuje dwa parametry całkowite i wypisuje ich różnicę w formacieDifference: [result] - Utworzyć wyrażenie lambda o nazwie
multiply, które przyjmuje dwa parametry całkowite i wypisuje ich iloczyn w formacieProduct: [result] - Odczytać z wejścia dwie liczby i znak operacji
- Na podstawie znaku operacji wywołać odpowiednie wyrażenie lambda, przekazując mu te dwie liczby
Znakiem operacji będzie jeden z następujących:
+dla dodawania (wywołaj wyrażenie lambdaadd)-dla odejmowania (wywołaj wyrażenie lambdasubtract)*dla mnożenia (wywołaj wyrażenie lambdamultiply)
Użyj następującego dokładnego formatu wyjściowego, zależnie od operacji:
Dodawanie:
Sum: [result]Odejmowanie:
Difference: [result]Mnożenie:
Product: [result]Pamiętaj, że parametry wyrażenia lambda definiuje się w nawiasach po klauzuli przechwytywania, używając tej samej składni co w przypadku zwykłych parametrów funkcji. Przypisz każde wyrażenie lambda do zmiennej, używając słowa kluczowego auto, a następnie wywołaj odpowiednie wyrażenie lambda na podstawie znaku operacji z wejścia, używając instrukcji if-else lub switch.
Spróbuj swoich sił
#include <iostream>
using namespace std;
int main() {
// Odczytaj dane wejściowe
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: Utwórz wyrażenia lambda dla operacji dodawania, odejmowania i mnożenia
// TODO: Użyj instrukcji if-else lub switch, aby wywołać odpowiednią lambdę na podstawie operation
return 0;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami4Mapy (pary klucz–wartość)
Poznajemy std::mapTworzenie mapyOdczytywanie i modyfikowanie wartościSprawdzanie kluczyUsuwanie parIterowanie po mapiePodsumowanie – częstość występowania słów7Zaawansowane funkcje
Przekazywanie przez referencjęWprowadzenie do wyrażeń lambdaWyrażenia lambda z parametramiWyrażenia lambda z wartościami zwracanymiWprowadzenie do rekurencjiRekurencyjny silniaSortowanie za pomocą lambda2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadaniaPoćwicz samodzielnie: Kompilator C++ online