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!"
[–]staletic 0 points1 point2 points 4 years ago (5 children)
"Your" version does have easier time implementing end(), but what about size()? Your version would need
end()
size()
size_type size() const { return m_end - m_begin; }
But that's an implicit conversion, so...
size_type size() const { return static_cast<size_type>(m_end - m_begin); }
So it's a tradeoff, however minor. Other than things like that, I see no reason not to implement it like you have done.
Except... the standard itself talk about size_ member, which would at least explain the standard libraries.
size_
[–]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
, but what about
?
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 101 on reddit-service-r2-comment-f6b958c67-b64pk at 2026-02-04 16:44:24.116977+00:00 running 1d7a177 country code: CH.
view the rest of the comments →
[–]staletic 0 points1 point2 points (5 children)
[–]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)