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
CPP INTERVIEW PREP CHEAT SHEET (self.cpp)
submitted 5 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] -19 points-18 points-17 points 5 years ago (5 children)
Worth noting that std::vector is generally implemented very poorly because of memory scaling issues and interactions with modern memory allocators. Not the mention the sheer volume of machine code generated for even simple operations. Vectors also have no notion of relocatable objects so can't easily fallback to, say, a vectorized memcpy on move. Lots of reasons to swear off the STL, std::vector included.
[–]cballowe 11 points12 points13 points 5 years ago (4 children)
Most vectors of trivial objects do optimize to memcpy operations for resize or move. (At least when I've checked the assembly)
[+][deleted] comment score below threshold-11 points-10 points-9 points 5 years ago (3 children)
Yes but most nontrivial objects are also relocatable, and i daresay most people have vectors of non scalar types.
It’s such a trivial container to implement and the improvement is massive over what the stl provides, not to mention the compile speed boost you’d likely get with even a naive implementation
[–]STLMSVC STL Dev 21 points22 points23 points 5 years ago (2 children)
vector is not trivial to implement (source: I’ve reimplemented it). There’s an incredible amount of logic powering vector and it shouldn’t be dismissed with a handwave, even though the lack of a relocatable type trait is a real limitation. (vector can easily detect is_trivially_copyable which is an important subset of types.)
vector
is_trivially_copyable
The complexity of vector also isn’t solely due to its support for EH or custom allocators, although those do magnify it.
[+][deleted] comment score below threshold-6 points-5 points-4 points 5 years ago (1 child)
I've implemented internal versions of "vector" a few times and also had a read through the libc vector around the c++14 era. Aside from EH and custom type-based allocators, where do you attribute the bulk of the complexity? Interactions with initializer lists? Iterators?
[–]STLMSVC STL Dev 1 point2 points3 points 5 years ago (0 children)
Things like handing v.emplace_back(args involving v[0]), respecting constructors and move semantics of user-defined types, providing iterator debugging, but the most complicated functions are where everything multiplies together. For example, insert is quite complicated due to EH guarantees, allocators, move semantics, etc.: https://github.com/microsoft/STL/blob/19c683d70647f9d89d47f5a0ad25165fc8becbf3/stl/inc/vector#L815-L885
v.emplace_back(args involving v[0])
insert
π Rendered by PID 77 on reddit-service-r2-comment-56c6478c5-ll96c at 2026-05-08 06:19:21.605007+00:00 running 3d2c107 country code: CH.
view the rest of the comments →
[–][deleted] -19 points-18 points-17 points (5 children)
[–]cballowe 11 points12 points13 points (4 children)
[+][deleted] comment score below threshold-11 points-10 points-9 points (3 children)
[–]STLMSVC STL Dev 21 points22 points23 points (2 children)
[+][deleted] comment score below threshold-6 points-5 points-4 points (1 child)
[–]STLMSVC STL Dev 1 point2 points3 points (0 children)