namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:sort

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
kennen:lib:sort [2019-11-20 14:45]
rrichter [Beispiel]
kennen:lib:sort [2020-06-14 18:24] (aktuell)
rrichter [Ergebnis]
Zeile 5: Zeile 5:
 void sort (Ran first, Ran last)  void sort (Ran first, Ran last) 
 void sort (Ran first, Ran last, Comp comp)  void sort (Ran first, Ran last, Comp comp) 
 +void sort (Exec pol, Ran first, Ran last) 
 +void sort (Exec pol, Ran first, Ran last, Comp comp) 
 + 
 +Ran ranges::sort (Range r, Comp comp = {}, Proj proj = {}) 
 +Ran ranges::sort (Ran first, Ran last, Comp comp = {}, Proj proj = {}) 
 </code> </code>
  Sortiert den Bereich [first,last) in aufsteigender Folge.  Sortiert den Bereich [first,last) in aufsteigender Folge.
Zeile 11: Zeile 16:
 | ''first'' | Anfang des Bereiches | | ''first'' | Anfang des Bereiches |
 | ''last''  | Ende des Bereiches | | ''last''  | Ende des Bereiches |
-| ''comp''  | Vergleichskriterium|+| ''comp''  | Vergleichskriterium (Vorgabe = ''less'')| 
 +| ''proj''  | einstelliger Funktor (Vorgabe = ''std::identity'') | 
 +| ''pol''   | [[..:include:execution|parallele Ausführungsart]] |
 ==== Ergebnis ==== ==== Ergebnis ====
-Rückgabewert: keiner.+Rückgabewert: keiner bzw''last''
  
 ==== Siehe auch ==== ==== Siehe auch ====
Zeile 35: Zeile 42:
  
   std::cout << s << '\n';   std::cout << s << '\n';
 +}
 +</code>
 +
 +<code cpp rg_sort.cpp>
 +#include <algorithm>
 +#include <iostream>
 +#include <string>
 +#include <vector>
 +
 +struct Person
 +{
 +  std::string name;
 +  int born;
 +  int died;
 +};
 +
 +auto lifespan = [](Person p) { return p.died - p.born; };
 +
 +void show(const std::vector<Person>& persons, std::string message)
 +{
 +  std::cout << '\n' << message << "\n\n";
 +  
 +  for (auto p : persons)
 +  {
 +    std::cout 
 +      << p.name << '\t' 
 +      << p.born << '-' 
 +      << p.died << ' ' 
 +      << lifespan(p) << '\n';
 +  }
 +}
 +
 +int main()
 +{
 +  auto v = std::vector<Person> 
 +  {
 +    { "Galilei", 1564, 1642 },
 +    { "Newton" , 1642, 1726 },
 +    { "Hawking", 1942, 2018 },
 +  };
 +  
 +  namespace rg = std::ranges;
 +
 +  rg::sort(v, {}, &Person::name);  
 +  show(v, "--- sorted by name:");  
 +
 +  rg::sort(v, {}, &Person::born);  
 +  show(v, "--- sorted by year of birth:");
 +
 +  rg::sort(v, rg::greater{}, lifespan);  
 +  show(v, "--- sorted by lifespan:");  
 } }
 </code> </code>
  
kennen/lib/sort.1574257505.txt.gz · Zuletzt geändert: 2019-11-20 14:45 von rrichter