size_type size() const noexcept;
Returns: A count of the number of char-like objects currently in the string.
Complexity: constant time.
size_type length() const noexcept;
Returns: size().
size_type max_size() const noexcept;
Returns: The size of the largest possible string.
Complexity: constant time.
void resize(size_type n, charT c);
Requires: n <= max_size()
Throws: length_error if n > max_size().
Effects: Alters the length of the string designated by *this as follows:
If n <= size(), the function replaces the string designated by *this with a string of length n whose elements are a copy of the initial elements of the original string designated by *this.
If n > size(), the function replaces the string designated by *this with a string of length n whose first size() elements are a copy of the original string designated by *this, and whose remaining elements are all initialized to c.
Effects: resize(n,charT()).
size_type capacity() const noexcept;
Returns: The size of the allocated storage in the string.
void reserve(size_type res_arg=0);
The member function reserve() is a directive that informs a basic_string object of a planned change in size, so that it can manage the storage allocation accordingly.
Effects: After reserve(), capacity() is greater or equal to the argument of reserve. [ Note: Calling reserve() with a res_arg argument less than capacity() is in effect a non-binding shrink request. A call with res_arg <= size() is in effect a non-binding shrink-to-fit request. — end note ]
Remarks: shrink_to_fit is a non-binding request to reduce capacity() to size(). [ Note: The request is non-binding to allow latitude for implementation-specific optimizations. — end note ]
Effects: Behaves as if the function calls:
erase(begin(), end());
Returns: size() == 0.
reserve() uses allocator_traits<Allocator>::allocate() which may throw an appropriate exception.