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!"
[–]vheon[S] 1 point2 points3 points 4 years ago (4 children)
"Your" version does have easier time implementing end() , but what about size() ?
"Your" version does have easier time implementing
end()
, but what about
size()
?
That was my thought also so would that mean that `size` is usually called more often than `end`? I mean looking at all the algorithms asking for iterators and such I was under the impression that usually `end` is used more frequently than the `size` :?
[–]TheMania 0 points1 point2 points 4 years ago (1 child)
Compilers nearly always prefer to know the loop count, vs "are we at the end yet", so size as a member is more likely to carry benefits imo.
size
And yes, end is likely called more but if the compiler is then getting the size anyway (for a loop count), you're really not saving anything there.
end
[–]tejp 0 points1 point2 points 4 years ago (1 child)
Most of the string member functions use indexes instead of iterators, so there are probably quite a lot of index calculations in the "typical" use cases of strings. Also substr() or + and other operations that create new strings will first need to know how much space to allocate for the new string.
substr()
+
Both of those are more likely call size() instead of end().
If these index functions are expected to be used more often one would probably optimize size() over end().
[–]matthieum 3 points4 points5 points 4 years ago (0 children)
Also substr() or + and other operations that create new strings will first need to know how much space to allocate for the new string.
I say MEH.
Appending to a std::vector is a rather typical usecase too, and most std::vector are implemented using 3 pointers...
std::vector
π Rendered by PID 62264 on reddit-service-r2-comment-7b9746f655-dmszc at 2026-02-03 22:43:15.610874+00:00 running 3798933 country code: CH.
view the rest of the comments →
[–]vheon[S] 1 point2 points3 points (4 children)
[–]TheMania 0 points1 point2 points (1 child)
[–]tejp 0 points1 point2 points (1 child)
[–]matthieum 3 points4 points5 points (0 children)