Microsoft 17.04.2023, 09:17 Uhr

Neue Fold-Algorithmen in C++ 23

C++23 führt eine neue Familie von Fold-Algorithmen ein, die als std::ranges::fold_* bekannt sind.
(Quelle: Microsoft.com)
Seit Version 20 kennt die Standardbibliothek von C++ Algorithmen, die als erstes Argument Bereiche statt Iteratorpaare verwenden. Wichtige Algorithmen wie std::accumulate wurden jedoch nicht aktualisiert. Dies wurde in C++23 mit der neuen Algorithmenfamilie std::ranges::fold_* nachgeholt. Das Standardisierungspapier dazu trägt den Namen P2322, wurde von Barry Revzin verfasst und in Visual Studio 2022 Version 17.5 implementiert.
Ein Beispiel für die Verwendung des neuen std::ranges::fold_left-Algorithmus in C++23:
#include <iostream>
#include <vector>
#include <ranges>

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};
    auto sum = std::ranges::fold_left(v, 0);
    std::cout << sum << std::endl; // prints 15
}
Im vorstehenden Beispiel wird der std::ranges::fold_left-Algorithmus verwendet, um die Summe der Elemente im Vektor v zu berechnen. Der Algorithmus akzeptiert den Vektor v direkt als erstes Argument und gibt das Ergebnis der Faltung zurück.
In diesem Beitrag erklärt Sy Brand, C++ Developer Advocate in Microsofts C++-Team die Vorteile der neuen "rangifizierten" Algorithmen, geht dabei auch auf die neuen C++23-Ergänzungen ein. Zudem erkundet sie einige der Entwurfsmöglichkeiten für Fold-Algorithmen in C++.


Das könnte Sie auch interessieren