Lambda Expressions in c++

avatar

In diesem Beitrag zeige ich ein kleines Beispiel, wie man die Lambda Expressions in c++ nutzen kann. Lambdas werden in der funktionalen Programmierung eingesetzt, können aber auch in anderen Programmierparadigmen verwendet werden. Dadurch kann man zum Beispiel eine Funktion als Parameter an eine anderen Funktion übergeben. Man kann Lambdas auch als eine "kurzschreibweise" einer normalen Funktionsdefinition sehen.

#include <iostream>
#include <vector>

auto print = []<typename T>(T result) -> void {std::cout << result << '\n';};
auto insertNumbers = []<typename T>(std::vector<T> *list, T value) -> void {list->push_back(value);};
auto sumUp = []<typename T>(const std::vector<T> *list) -> T {
    T sum = 0;
    for(T elem : *list){
        sum += elem;
    }
    return sum;
};

int main(){
    std::vector<int> numbers = std::vector<int>();
    for(int n = 0; n < 10; n++){
        insertNumbers(&numbers, n+1);
    }
    int sum = sumUp(&numbers);
    print(sum);
}



0
0
0.000
6 comments
avatar

Ich kenne Lambdas momentan auch eher als Kurzschreibweise von Funktionen in Python.
Dort bin ich aktuell grad beim Regex Thema.

0
0
0.000
avatar

Mit regulären Ausdrücken kann man schön spielen. Ist ein mächtiges Werkzeug.

0
0
0.000
avatar

ja, da hast du recht. Derzeit muss ich mir aber erst mal die Basis aneignen.
Manchmal unterscheiden sich die Angaben von der Realität.

Screenshot_20230918_165417.png

Dann erzählt mir der Chatbot, der + Quantifier(heißt das so?) ist greedy/gierig und sucht die Buchstabenreihenfolge hintennach ("o") bis zum Ende des Strings. Interessanter Effekt, wenn man einen längeren Text einlesen lässt. (entsprechend bis zum letzten o)

0
0
0.000