You might think that a std::string (and all of its friends in the std::basic_string family) are basically a vector of characters internally. But strings are organized differently due to specific optimizations permitted for strings but not for vectors.
Inside STL: The string
By Raymond Chen
From the article:
The starting point for a
std::
is this:¹basic_string template<typename T> struct basic_string { T* ptr; size_t size; size_t capacity; };The
ptr
is a pointer to the beginning of the string contents.The
size
is the number of characters in the string, not including the null terminator.The
capacity
is the string capacity, not including the null terminator.The picture for this simplified version is as follows:
Add a Comment
Comments are closed.