IT-Lexikon › Programmierung › Ranges in C++

Ranges in C++

Programmierung Svenska → Aktualisiert: 2026-09-14

C++20s Überarbeitung der Standardalgorithmen: Eine Sammlung wird als ein Objekt übergeben statt als zwei Iteratoren, und Transformationen werden mit einem Pipe-Zeichen verkettet.

Der alte Stil verlangte std::sort(v.begin(), v.end()) und half nicht weiter, wenn die beiden Iteratoren aus unterschiedlichen Containern stammten. Mit Ranges wird daraus std::ranges::sort(v). Die größere Neuerung sind Views: träge, nicht besitzende Adapter, die sich verketten lassen — v | views::filter(gerade) | views::transform(quadrat) | views::take(5) durchläuft die Sammlung einmal, ohne irgendwelche Zwischenvektoren anzulegen. Die Grundlage bildet Eric Nieblers Bibliothek range-v3. Kritisiert werden die Kompilierzeiten, Fehlermeldungen, die selbst mit Concepts schwer lesbar bleiben, und dass C++20 versehentlich ohne ranges::to erschien, was es unnötig umständlich machte, am Ende wieder einen echten Container zu bekommen. Das kam erst mit C++23.

← Zurück zum Lexikon