Skip to content

Latest commit

 

History

History
80 lines (57 loc) · 1.59 KB

File metadata and controls

80 lines (57 loc) · 1.59 KB

Aufgaben zu generischen Lambdas

Zurück


Lösungen


Überblick

Aufgabe Beschreibung
Aufgabe 1 Personensuche
(Voraussetzungen: Algorithmus std::find_if)

Tabelle 1: Aufgaben zu generischen Lambdas.


Aufgabe 1: Personensuche

Voraussetzungen: Algorithmus std::find_if

Wir haben bei den generischen Lambdas das so genannte Feature der Automatic Type Deduction kennen gelernt:

auto isGreaterThanFifty = [](auto n) { return n > 50; };

Mit diesem Lambda-Ausdruck haben wir std::vector-Objekte mit int und double-Werten durchsucht. Nun wollen wir Person-Objekte ins Spiel bringen:

class Person
{
private:
    std::string m_name;
    size_t m_age;

    ...
};

Erweitern bzw. realisieren Sie die Klasse Person so, dass man in einem std::vector<Person>-Objekt Personen eines bestimmten Alters, also in unserem Beispiel älter als 50 Jahre – mit demselben Lambda-Ausdruck von oben durchsuchen kann:

int main()
{
    std::vector<Person> personValues{
        Person{ "Hans", 40 },
        Person{ "Sepp", 60 }
    };

    // use generic lambda with a vector of Persons
    auto pos = std::find_if(
        std::begin(personValues),
        std::end(personValues),
        isGreaterThanFifty
    );
    if (pos != std::end(personValues)) {
        std::cout << "Found Person:  " << (*pos).getName() << std::endl;
    }
}

Lösungen


Zurück