6 ms·
Great writing, hilarious. I feel like we all could know someone who fits these characteristics.
by thoughtpalette 4y ago
Great writing, hilarious.
I feel like we all could know someone who fits these characteristics.
- jeffrallen 4y agoI worked with a guy who implemented map and reduce in C++ as a subtask of some other task. It was, of course, a header-only templated monstrosity. He called it "fun.hpp". "Fun" times, indeed, working with him.
- djmips 4y agoOMG.
- omegaham 4y agoYou'll like the `std::ranges` library that's been somewhat implemented as of C++20 and is getting some more stuff in C++23. It's very Fun! #include <ranges> #include <numeric> #include <vector> #include <iostream> int main() { std::vector<int> vec = {1, 2, 3}; // map, using `std::views::transform`. Implemented in C++20 for(int elem : std::views::transform(vec, [](int x) { return x + 1; })) { std::cout << elem << " "; // 2 3 4 } std::cout << "\n"; // `std::ranges::fold_left` will be available with C++23. // Until then, we're stuck using the <numeric> iterator version, which was // implemented in C++20. std::cout << std::accumulate(vec.begin(), vec.end(), 1, [](int x, int y) { return x * y; }) << "\n"; // 6 return 0; } Building and running with the following: $ g++ --std=c++20 test.cpp $ ./a.out 2 3 4 6
- delta_p_delta_x 4y agoThere's a nicer way still: #include <algorithm> #include <functional> #include <iostream> #include <numeric> #include <ranges> #include <vector> int main() { std::vector<int> vec{1, 2, 3, 4, 5}; auto plus_one{[](const auto x) { return x + 1; }}; std::ranges::for_each(vec | std::views::transform(plus_one), [](const auto x) { std::cout << x << " "; }); std::cout << "\n"; std::cout << std::accumulate(std::begin(vec), std::end(vec), 1, std::multiplies<>()) << "\n"; return 0; } https://godbolt.org/z/84ePjfPhf https://godbolt.org/z/84ePjfPhf
- TuringTest 4y ago> I feel like we all could know someone who fits these characteristics. "Know" or "be"? :-P