//#(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";
}