diff --git a/chapter_01/examples/consteval.cc b/chapter_01/examples/consteval.cc new file mode 100644 index 0000000000000000000000000000000000000000..d473db73d11d125eb9b490ed0c3a3b2dd49165aa --- /dev/null +++ b/chapter_01/examples/consteval.cc @@ -0,0 +1,23 @@ +#include <algorithm> +#include <ranges> +namespace sr = std::ranges; +namespace sv = sr::views; + +consteval auto is_prime(unsigned N) -> bool +{ + return sr::none_of( + sv::iota(2U) + | sv::take_while([=](auto i) { return i * i <= N; }), + [=](auto i){ return N % i == 0; }); +} + +auto main() -> int +{ + return (sr::fold_left( + sv::iota(2U) + | sv::filter([](unsigned i) { return is_prime(i); }) + | sv::take(10U), + 0UL, + std::plus<unsigned long>{})); +} + diff --git a/chapter_01/examples/iotaloop.cc b/chapter_01/examples/iotaloop.cc new file mode 100644 index 0000000000000000000000000000000000000000..b3535e3a338d6984237bc09d206028ec676f14fa --- /dev/null +++ b/chapter_01/examples/iotaloop.cc @@ -0,0 +1,12 @@ +#include <print> +#include <ranges> + +namespace sr = std::ranges; +namespace sv = sr::views; + +auto main() -> int +{ + for (auto i : sv::iota(10, 15)) std::print("{}\n", i); +} + + diff --git a/chapter_01/examples/iotaloop2.cc b/chapter_01/examples/iotaloop2.cc new file mode 100644 index 0000000000000000000000000000000000000000..4545a87d344b17f024f662532407fbe6e291b7fa --- /dev/null +++ b/chapter_01/examples/iotaloop2.cc @@ -0,0 +1,16 @@ +#include <print> +#include <ranges> + +namespace sr = std::ranges; +namespace sv = sr::views; +auto divisible_by_4(int i) -> bool +{ + return i % 4 == 0; +} +auto main() -> int +{ + for (auto i : sv::iota(1, 500) | sv::filter(divisible_by_4)) + std::print("{}\n", i); +} + + diff --git a/chapter_01/solutions/iotaloop3.cc b/chapter_01/solutions/iotaloop3.cc new file mode 100644 index 0000000000000000000000000000000000000000..84527234c4822b2a0b2639b1aeb70da4cd6b0895 --- /dev/null +++ b/chapter_01/solutions/iotaloop3.cc @@ -0,0 +1,16 @@ +#include <print> +#include <ranges> + +namespace sr = std::ranges; +namespace sv = sr::views; +auto my_selection(int i) -> bool +{ + return (i - 10) % 7 == 0; +} +auto main() -> int +{ + for (auto i : sv::iota(-50, 50) | sv::filter(my_selection)) + std::print("{}\n", i); +} + + diff --git a/chapter_01/examples/numsort.cc b/chapter_06/examples/numsort.cc similarity index 100% rename from chapter_01/examples/numsort.cc rename to chapter_06/examples/numsort.cc diff --git a/chapter_01/examples/sharedptr.cc b/chapter_06/examples/sharedptr.cc similarity index 100% rename from chapter_01/examples/sharedptr.cc rename to chapter_06/examples/sharedptr.cc diff --git a/chapter_01/examples/uniqueptr.cc b/chapter_06/examples/uniqueptr.cc similarity index 100% rename from chapter_01/examples/uniqueptr.cc rename to chapter_06/examples/uniqueptr.cc