```
size_type size() const noexcept;
```

```
size_type length() const noexcept;
```

```
size_type max_size() const noexcept;
```

```
void resize(size_type n, charT c);
```

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.

```
void resize(size_type n);
```

```
size_type capacity() const noexcept;
```

```
void reserve(size_type res_arg);
```

Effects:
A directive that informs a basic_string of a planned change in size,
so that the storage allocation can be managed accordingly.

After
reserve(),
capacity()
is greater or equal to the argument of
reserve
if reallocation happens; and
equal to the previous value of
capacity()
otherwise.

Reallocation happens at this point if and only if
the current capacity is less than the argument of reserve().

```
void shrink_to_fit();
```

```
void clear() noexcept;
```

```
[[nodiscard]] bool empty() const noexcept;
```