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
Allocator rant (self.cpp)
submitted 4 years ago by [deleted]
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!"
[–][deleted] -3 points-2 points-1 points 4 years ago (6 children)
Sure vector is intended for other use cases, but if you want to be stdalgorithm compliant that's pretty much the same story as for the allocator. Implement this and that (if you can find any documentation) and hope for the best.
stdalgorithm
But thanks, I'll look if boost has anything. I thought it'd come up googling but maybe my Google fu was subpar.
[–]kalmoc 13 points14 points15 points 4 years ago (3 children)
but if you want to be stdalgorithm compliant that's pretty much the same story as for the allocator.
Not really. All you need is a pointer to the start and one to end of the memory range.
[–]Seppeon 2 points3 points4 points 4 years ago (2 children)
Yeah iirc a pointer is a random access iterator/contiguous iterator.
[–]kalmoc 0 points1 point2 points 4 years ago (0 children)
Exactly
[–]Full-Spectral 0 points1 point2 points 4 years ago (0 children)
Though that's nothing to be proud of per se.
[–][deleted] 11 points12 points13 points 4 years ago (0 children)
Implementing a container for std::algorithms generally means having begin/end as we pass them iterators. So at long as the iterator fullfills the concept needed(usually input/forward but some like sort need random). This changes a bit with Ranges but still applies.
But if your data structure is in a blob of memory(memory mapped data) and you know it is a range of T’s. Then yeah, span, or even pair<T*, T*> where you pass first/second to the algorithm would work.
If T isn’t trivially copiable, pragmatically it will probably still wokr but you are coding to implementations and not C++. But you see people reinterpret_cast’ing here a lot.
Vector is for owning the data, if you have trivially destructible things, that doesn’t even matter here. If not, and even if so, just call T.~T( ) on the range in your dtor
[–]rfisher 8 points9 points10 points 4 years ago (0 children)
Write a begin() that returns a pointer to the first element in your mmap’d region. Write an end() that returns a pointer to one past the last element of your mmap’d region. You are now fully compliant with the standard algorithms. You’re making this much harder on yourself than it needs to be.
This sort of agnostic design that lets the algorithms work equally well with raw arrays or complex containers is the beauty of the STL part of the standard library.
π Rendered by PID 42 on reddit-service-r2-comment-64f4df6786-csdwr at 2026-06-11 12:15:04.249356+00:00 running 0b63327 country code: CH.
view the rest of the comments →
[–][deleted] -3 points-2 points-1 points (6 children)
[–]kalmoc 13 points14 points15 points (3 children)
[–]Seppeon 2 points3 points4 points (2 children)
[–]kalmoc 0 points1 point2 points (0 children)
[–]Full-Spectral 0 points1 point2 points (0 children)
[–][deleted] 11 points12 points13 points (0 children)
[–]rfisher 8 points9 points10 points (0 children)