cpp / expert
Snippet
Deklarative Datenpipelines mit Ranges und Views
C++20 Ranges ermöglichen die funktionale Komposition von Algorithmen unter Verwendung des Pipe-Operators. Views sind 'lazy', was bedeutet, dass Operationen erst beim tatsächlichen Zugriff ausgeführt werden, was temporäre Allokationen vermeidet und die Cache-Lokalität verbessert.
snippet.cpp
cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <ranges>#include <vector>#include <iostream>int main() {std::vector<int> nums = {1, 2, 3, 4, 5, 6};auto results = nums| std::views::filter([](int n) { return n % 2 == 0; })| std::views::transform([](int n) { return n * n; });for (int n : results) {std::cout << n << " "; // 4 16 36}}
Erklärung
1
| std::views::filter(...)
Erstellt eine lazy Ansicht, die nur Elemente enthält, die dem Prädikat entsprechen.
2
| std::views::transform(...)
Wendet eine Transformationsfunktion verzögert auf jedes Element in der Pipeline an.