Wyrażenia Lambda C ++

Wyrażenia Lambda C ++

Wyrażenia Lambda są jedną z najpotężniejszych cech w C++. Lambda została wprowadzona w 11th Wersja C ++ i jest również dostępna w wersjach C ++ 14 i 17.

Ilekroć potrzebujemy wskaźnika funkcji w naszym programie, w tym konkretnym przypadku możemy użyć Lambda. Zapewnia dodatkowe opcje programatora C ++ do napisania definicji funkcji bez definiowania funkcji. Teraz omawiamy szczegóły dotyczące koncepcji wyrażenia Lambda.

Składnia Lambda

Składnia Lambda składa się głównie z trzech części. Oni są

  1. [] []
  2. ()

Gdzie [] nazywa się listę przechwytywania.

() nazywa się argumentem funkcji.

nazywa się korpusem funkcji.

Elementy Lambda

  1. Lista przechwytywania: Tutaj piszemy wyrażenie lub funkcja Lambda, cokolwiek będzie wymagane w programie.
  2. Parametry: Jest również znany jako Deklaracja Lambda. Może być używany jako przypadek opcjonalny.
  3. Definicja metody: Tutaj wyjaśniamy, w jaki sposób funkcja będzie zachowywać się w programie.

Zdefiniuj i wywołuje funkcję

int main ()

[] 90 // Lista przechwytywania i parametr.
Cout<< “The coding and expression part of Lambda” << endl ;
(); // Otwórz i bliski Brace wywoła wyrażenie lambda.
powrót 0;

Przykład programowania 1

#włączać
za pomocą przestrzeni nazw Std;
struct trippleValue // zdefiniuj obiekt funkcji .
int operator () (int wartość)
Wartość zwracana * 3;

;
int main ()

TRIPLEVALUE TV; // Tworzenie obiektów .
int t = TV (2);
Cout<< “ The Cube value is ” << t << endl ;
powrót 0;

Wyjście

Wyjaśnienie
Tutaj chcemy wyjaśnić, gdzie lambdas są faktycznie stosowane do programu. Aby to zrobić, tutaj tworzymy obiekt funkcyjny o nazwie TV. Nazwa klasy to TrippleValue. Więc tworzymy telewizję obiektu klasy TrippleValue, która uzyska wartość i przekształci ją w wartość kostki. Wewnątrz głównej funkcji tworzymy telewizor obiektowy i przekazujemy wartość 2. Teraz wydrukuj wartość t; pokazuje wynik 8. Ponieważ kostka 2 to 8.

Możliwe będzie, że Lambdas nie są używane w powyższym programie. Teraz ten sam rodzaj programu zostanie uruchomiony za pomocą wyrażenia Lambda w bardzo wydajny sposób w następnym programie.

Przykład programowania 2

#włączać
za pomocą przestrzeni nazw Std;
int main ()

auto v = [] (int value) return value * 2; ; // Wyrażenie lambda są tutaj używane.
int t = v (2);
Cout<< << t << endl ;
powrót 0;

Wyjście

Wyjaśnienie
Teraz wykonaliśmy ten sam program za pomocą wyrażenia Lambda. Tutaj deklarujemy zmienną V, która jest zmienną typu automatycznego, w której przechowujemy wartość, którą zwróci wyrażenie lambda. Robimy to obliczenia w jednej linii. Teraz przekazujemy wartość 2 wewnątrz zmiennej V i przechowujemy ją w zmiennej T. W następnym wierszu programu po prostu drukujemy zmienną t. Pokazuje wynik 4. Gdy zwracamy wartość w wyrażeniu lambda jako wartość * 2.

Przykład programowania 3

#włączać
#włączać
#włączać
int main ()

std :: vector vc 10, 20, 30, 40;
std :: for_each (vc.begin (), vc end (), [] (int n)
Cout<< << n * n << endl ;
);
powrót 0;

Wyjście

Wyjaśnienie
Tutaj bierzemy wektor o nazwie VC, który przyjmuje niektóre wartości 10, 20, 30 i 40. Chcemy wyrównać każdy element w wektorze. W tym celu używamy pętli For_each. Wewnątrz nawiasu pętli for_each używamy wyrażenia Lambda. W jego ciele po prostu kwadźmy te wartości wektorowe.

Korzyści z korzystania z Lambda

  1. Ekspresja Lambda skutecznie zwiększa czytelność programu.
  2. Zmniejsza nr linii w kodzie, a programy stają się prostsze. W rezultacie programista otrzymuje ulgę w pisaniu mniej bez kodowania.
  3. Wyrażenie Lambda nie wprowadza do programu żadnej dodatkowej nowej nazwy ani linii. Zwiększa solidność programu.
  4. Zmniejsza również złożoność czasu programu.

Wniosek

Omawiając szczegóły dotyczące koncepcji tematu ekspresji Lambda w C ++, doszliśmy do wniosku, że jest to jedna z potężnych koncepcji C++. Dzięki wyrażeniu Lambda możemy łatwo wykonać kod programowy w wydajny sposób. Jeśli jesteśmy w stanie zrozumieć pojęcie Lambda i jej zastosowania, to za pomocą wyrażenia Lambda możemy bardzo łatwo rozwiązać wiele odpowiedzi programistycznych.