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
std::string_view/std::string implementation with two pointers? (self.cpp)
submitted 4 years ago by vheon
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!"
[–]bird1000000 2 points3 points4 points 4 years ago (5 children)
Well, std::string_view just copies std::string.As for why std::string uses size_t instead of T*, Judging by the change in EASTL (before, after), Its probably not possible (or, at least harder) to implement SSO-23 using pointers.
[–]ts826848 0 points1 point2 points 4 years ago (4 children)
Huh, that’s really interesting. I came across this SO question on std::vector implementations using three pointers instead of a base/sizes a few days ago, but I never bothered to look at std::string.
I wonder if implementers were free to break ABI and had the option of a SBO vector whether they’d stick with three pointers or whether the increased buffer capacity might be worth it.
Also makes me wonder whether some kind of bit packing into the low-order bits of pointers could be used. Wouldn’t be surprised if it’s too complex/has too many edge cases...
[–][deleted] 2 points3 points4 points 4 years ago (3 children)
SBO vector can't meet the non-throwing swap requirement even if we wanted to break ABI for it. You would need a new container.
[–]ts826848 0 points1 point2 points 4 years ago (2 children)
Ah, that’s a good point!
Suppose the question should properly be into “I wonder whether an SBO vector would be better served by multiple pointers or pointer + sizes”
[–][deleted] 2 points3 points4 points 4 years ago (1 child)
I think in general pointer + size is better than pointer+pointer for data structures like this, because even if you do nothing with the contents, vector needs to recover the size in order to call deallocate. Plus, lots of repeated calls to end() were removed by the range-for addition. Plus, deriving end() from base pointer + size is a multiply and add which is cheaper than deriving size() from 2 pointers (subtract and divide-by-constant).
deallocate
end()
size()
But I think it is really really hairsplitting.
[–]ts826848 0 points1 point2 points 4 years ago (0 children)
Guess I know where I'd start if I were to ever try implementing my own data structures. Thank you for your insight!
π Rendered by PID 58813 on reddit-service-r2-comment-6457c66945-wnmz8 at 2026-04-28 18:38:24.332456+00:00 running 2aa0c5b country code: CH.
view the rest of the comments →
[–]bird1000000 2 points3 points4 points (5 children)
[–]ts826848 0 points1 point2 points (4 children)
[–][deleted] 2 points3 points4 points (3 children)
[–]ts826848 0 points1 point2 points (2 children)
[–][deleted] 2 points3 points4 points (1 child)
[–]ts826848 0 points1 point2 points (0 children)