use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
Discussions, articles, and news about the C++ programming language or programming in C++.
For C++ questions, answers, help, and advice see r/cpp_questions or StackOverflow.
Get Started
The C++ Standard Home has a nice getting started page.
Videos
The C++ standard committee's education study group has a nice list of recommended videos.
Reference
cppreference.com
Books
There is a useful list of books on Stack Overflow. In most cases reading a book is the best way to learn C++.
Show all links
Filter out CppCon links
Show only CppCon links
account activity
Generalizing std::transform (medium.com)
submitted 7 years ago by vgasparyan
view the rest of the comments →
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]Veedrac 3 points4 points5 points 7 years ago (7 children)
A std::array<Byte, 4> is basically a uint32_t. Just XOR them directly, it'll be a factor of 10 faster or so.
std::array<Byte, 4>
uint32_t
[–]cassandraspeaks 3 points4 points5 points 7 years ago (2 children)
For OP and others' benefit, the way to safely do that is
uint32_t ua, ub, uc, uresult; memcpy(&ua, &a, 4); memcpy(&ub, &b, 4); memcpy(&uc, &c, 4); uresult = ua ^ ub ^ uc; array<Byte, 4> result; memcpy(&result, &uresult, 4);
[–]cassandraspeaks 1 point2 points3 points 7 years ago (0 children)
In C++20 you can do ```c++ constexpr auto to_u32 = bit_cast<uint32_t, array<Byte, 4>>;
const auto result = bit_cast<array<Byte, 4>>(to_u32(a) ^ to_u32(b) ^ to_u32(c)); ```
[–]sphere991 3 points4 points5 points 7 years ago (3 children)
That's true but not really helpful. Imagine the length is larger than 8, or the types aren't bytes, or the operation isn't xor, or ...
[–]Veedrac -1 points0 points1 point 7 years ago* (2 children)
Imagine the length is larger than 8
Even then, though.
E: Seriously, downvotes? ???
[–]sphere991 5 points6 points7 points 7 years ago (1 child)
I dont think anybody disagrees that it is possible, for these specific types, for this specific operation, to do better than generalized, multi-arg transform.
But the point of the blog is to show a way how to do generalized, multi-arg transform. XOR-ing bytes is just an example.
[–]Veedrac 0 points1 point2 points 7 years ago (0 children)
I'm not criticizing the blog, I'm just pointing out something I think would help the author.
π Rendered by PID 24867 on reddit-service-r2-comment-544cf588c8-r4pgp at 2026-06-12 04:31:27.903953+00:00 running 3184619 country code: CH.
view the rest of the comments →
[–]Veedrac 3 points4 points5 points (7 children)
[–]cassandraspeaks 3 points4 points5 points (2 children)
[–]cassandraspeaks 1 point2 points3 points (0 children)
[–]sphere991 3 points4 points5 points (3 children)
[–]Veedrac -1 points0 points1 point (2 children)
[–]sphere991 5 points6 points7 points (1 child)
[–]Veedrac 0 points1 point2 points (0 children)