Range views — lazy transformations on ranges.
1#include <ranges>2#include <vector>34std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};56// Lazy pipeline7auto result = v8 | std::views::filter([](int n) { return n % 2 == 0; })9 | std::views::transform([](int n) { return n * n; })10 | std::views::take(3);1112for (int n : result) {13 std::cout << n << " "; // 4 16 3614}
Available views:
filter, transform, take, dropsplit, join, reverse, elementsiota (infinite sequence)enumerate (C++23)zip (C++23)Benefits: