Modernes C++ programmieren

Okt 23, 2024

lst-0635-godb.cpp

//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/4zYsWW9Wq 
#include <vector>
#include <string>
#include <algorithm> // sort
#include <iostream>  // cout
using std::string; using std::vector; using std::cout;
// wie zuvor
int main() {
    vector zwerge{           // wie zuvor
    /* sortieren */
    bool rueckwaerts = true; // oder false. Variable außerhalb des Lambdas
    unsigned richtigrum = 0; // zählt < mit
    unsigned falschrum = 0;  // zählt > mit
    std::ranges::sort(zwerge,
        [rueckwaerts,&falschrum,&richtigrum](const Zwerg& a, const Zwerg& b) {
            bool result = rueckwaerts
                ? a.name_ > b.name_
                : a.name_ < b.name_;
            if(result==false) ++falschrum; else ++richtigrum;
            return result;
        }
    );
    /* ausgeben */
    cout << "Falschrum:" << falschrum << " Richtigrum: " << richtigrum << "\n";
    for(const auto& z : zwerge) // rückwärts: "Thorin" bis "Balin"
        cout << z.name_  << " ";
    cout << "\n";
}