kennen:include:ranges
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
kennen:include:ranges [2024-02-22 20:53] – [Beispiele] rrichter | kennen:include:ranges [2024-02-22 21:04] (aktuell) – [Beispiele] rrichter | ||
---|---|---|---|
Zeile 126: | Zeile 126: | ||
===== Beispiele ===== | ===== Beispiele ===== | ||
+ | < | ||
+ | empty< | ||
+ | single(42) | ||
+ | iota(0, | ||
+ | iota(0) | take(3) | ||
+ | repeat(6) | take(3) | ||
+ | counted(begin(v), | ||
+ | v | all : [1, 3, 5, 4, 2] | ||
+ | v | drop_while(below_5) | ||
+ | v | enumerate | ||
+ | v | filter(below_5) | ||
+ | v | reverse | ||
+ | v | take_while(below_5) | ||
+ | v | transform(square) | ||
+ | |||
+ | v | chunk(3) | ||
+ | v | chunk_by(std:: | ||
+ | v | pairwise_transform(double_digit) | ||
+ | v | pairwise | ||
+ | v | slide(2) | ||
+ | v | stride(2) | ||
+ | |||
+ | s : [' | ||
+ | s | split(' | ||
+ | s | split(' | ||
+ | s | split(' | ||
+ | |||
+ | zip(v, s) : [(1, ' | ||
+ | zip_transform(double_digit, | ||
+ | cartesian_product(v|take(2), | ||
+ | |||
+ | m : {" | ||
+ | m | keys : [" | ||
+ | m | values | ||
+ | </ | ||
+ | ist die Ausgabe des Programms | ||
<code cpp views_examples.cpp> | <code cpp views_examples.cpp> | ||
#include < | #include < | ||
Zeile 140: | Zeile 176: | ||
void show(Range&& | void show(Range&& | ||
{ | { | ||
- | std:: | + | |
} | } | ||
Zeile 146: | Zeile 182: | ||
void show_range_of_ranges(Range&& | void show_range_of_ranges(Range&& | ||
{ | { | ||
- | show(r, message); | + | |
} | } | ||
Zeile 152: | Zeile 188: | ||
void show_range_of_pairs(Range&& | void show_range_of_pairs(Range&& | ||
{ | { | ||
- | show(r, message); | + | |
} | } | ||
Zeile 158: | Zeile 194: | ||
void show_map(Range&& | void show_map(Range&& | ||
{ | { | ||
- | show(r, message); | + | |
} | } | ||
Zeile 166: | Zeile 202: | ||
auto decorate(auto e) | auto decorate(auto e) | ||
{ | { | ||
- | return e; | + | |
} | } | ||
auto decorate(char e) | auto decorate(char e) | ||
{ | { | ||
- | return std:: | + | |
} | } | ||
auto decorate(std:: | auto decorate(std:: | ||
{ | { | ||
- | return std:: | + | |
} | } | ||
Zeile 205: | Zeile 241: | ||
{ | { | ||
std::cout << (inner_cnt++ ? ", ":"" | std::cout << (inner_cnt++ ? ", ":"" | ||
- | | + | |
} | } | ||
std::cout << " | std::cout << " | ||
Zeile 221: | Zeile 257: | ||
{ | { | ||
std::cout << (cnt++ ? ", ":"" | std::cout << (cnt++ ? ", ":"" | ||
- | | + | |
} | } | ||
std::cout << " | std::cout << " | ||
Zeile 235: | Zeile 271: | ||
{ | { | ||
std::cout << (cnt++ ? ", ":"" | std::cout << (cnt++ ? ", ":"" | ||
- | | + | |
} | } | ||
std::cout << " | std::cout << " | ||
Zeile 245: | Zeile 281: | ||
{ | { | ||
using namespace std::views; | using namespace std::views; | ||
- | using namespace std:: | + | |
| | ||
auto v = std:: | auto v = std:: | ||
Zeile 251: | Zeile 287: | ||
auto m = std:: | auto m = std:: | ||
auto below_5 = [](int x){ return x < 5; }; | auto below_5 = [](int x){ return x < 5; }; | ||
- | auto double_digit = [](int a, int b) { return 10*a + b; }; | + | |
- | + | ||
show( empty< | show( empty< | ||
show( single(42), " | show( single(42), " | ||
Zeile 258: | Zeile 294: | ||
show( iota(0) | take(3), " | show( iota(0) | take(3), " | ||
show( repeat(6) | take(3), " | show( repeat(6) | take(3), " | ||
- | std::cout << ' | + | |
show( counted(begin(v), | show( counted(begin(v), | ||
show( v | all, "v | all"); | show( v | all, "v | all"); | ||
show( v | drop_while(below_5), | show( v | drop_while(below_5), | ||
- | show_range_of_pairs(v | enumerate, "v | enumerate" | + | |
show( v | filter(below_5), | show( v | filter(below_5), | ||
show( v | reverse, "v | reverse" | show( v | reverse, "v | reverse" | ||
show( v | take_while(below_5), | show( v | take_while(below_5), | ||
show( v | transform([](int x){ return x*x; }), "v | transform(square)" | show( v | transform([](int x){ return x*x; }), "v | transform(square)" | ||
- | std::cout << ' | + | |
- | show_range_of_ranges( v | chunk(3), "v | chunk(3)" | + | |
- | show_range_of_ranges( v | chunk_by(std:: | + | show_range_of_ranges( v | chunk_by(std:: |
- | show( v | pairwise_transform(double_digit), | + | show( v | pairwise_transform(double_digit), |
- | show_range_of_pairs( v | pairwise, "v | pairwise" | + | show_range_of_pairs( v | pairwise, "v | pairwise" |
- | show_range_of_ranges( v | slide(2), "v | slide(2)" | + | show_range_of_ranges( v | slide(2), "v | slide(2)" |
- | show( v | stride(2), "v | stride(2)" | + | show( v | stride(2), "v | stride(2)" |
- | std::cout << ' | + | std::cout << ' |
show( s , " | show( s , " | ||
Zeile 282: | Zeile 318: | ||
show( s | split(' | show( s | split(' | ||
show( s | split(' | show( s | split(' | ||
- | std::cout << ' | + | |
- | show_range_of_pairs( zip(v, s), " | + | |
- | show( zip_transform(double_digit, | + | show( zip_transform(double_digit, |
- | show_range_of_pairs( cartesian_product(v|take(2), | + | show_range_of_pairs( cartesian_product(v|take(2), |
- | std::cout << ' | + | std::cout << ' |
- | show_map( m , " | + | |
show( m | keys , "m | keys" | show( m | keys , "m | keys" | ||
show( m | values , "m | values" | show( m | values , "m | values" | ||
} | } | ||
</ | </ | ||
- | erzeugt die Ausgabe | ||
- | < | ||
- | empty< | ||
- | single(42) | ||
- | iota(0, | ||
- | iota(0) | take(3) | ||
- | repeat(6) | take(3) | ||
- | counted(begin(v), | ||
- | v | all : [1, 3, 5, 4, 2] | ||
- | v | drop_while(below_5) | ||
- | v | enumerate | ||
- | v | filter(below_5) | ||
- | v | reverse | ||
- | v | take_while(below_5) | ||
- | v | transform(square) | ||
- | |||
- | v | chunk(3) | ||
- | v | chunk_by(std:: | ||
- | v | pairwise_transform(double_digit) | ||
- | v | pairwise | ||
- | v | slide(2) | ||
- | v | stride(2) | ||
- | |||
- | s : [' | ||
- | s | split(' | ||
- | s | split(' | ||
- | s | split(' | ||
- | |||
- | zip(v, s) : [(1, ' | ||
- | zip_transform(double_digit, | ||
- | cartesian_product(v|take(2), | ||
- | |||
- | m : {" | ||
- | m | keys : [" | ||
- | m | values | ||
- | </ |
kennen/include/ranges.1708631608.txt.gz · Zuletzt geändert: 2024-02-22 20:53 von rrichter