#include <iostream>
#include <ranges>
using namespace std;
int main() {
auto v = {1, 2, 3, 4, 5, 6, 7, 8, 9};
for (const auto &iter : v | views::reverse) {
cout << iter << " ";
}
cout << endl;
for (const auto &iter : v) {
cout << iter << " ";
}
cout << endl;
cout << "------" << endl;
for (const auto &iter : v | views::filter([](int i) { return i % 2; }) |
views::transform([](int i) { return i * 2; }) |
views::take(3)) {
cout << iter << " ";
}
cout << endl;
cout << "------" << endl;
for (const auto &iter : views::take(
views::transform(views::filter(v, [](int i) { return i % 2; }),
[](int i) { return i * 2; }),
3)) {
cout << iter << " ";
}
cout << endl;
cout << "------" << endl;
for (const auto &iter : v) {
cout << iter << " ";
}
cout << endl;
return 0;
}