Namespaces
Variants

std::{{{1}}}::shrink_to_fit

From cppreference.com
void shrink_to_fit();

Requests the removal of unused capacity.

It is a non-binding request to reduce the memory usage without changing the size of the sequence. It depends on the implementation whether the request is fulfilled.

If T is not MoveInsertable into std::<T, Allocator>, the behavior is undefined.

(since C++11)

Complexity

At most linear in the size of the container.

Exceptions

If an exception is thrown other than by the move constructor of a non-CopyInsertable T, there are no effects.

(since C++11)

Notes

In libstdc++, shrink_to_fit() is not available in C++98 mode.

Example

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
LWG 850 C++98 std:: lacked explicit shrink-to-fit operations provided
LWG 2033 C++98
C++11
1. the complexity requirement was missing (C++98)
2. T was not required to be MoveInsertable (C++11)
1. added
2. required
LWG 2223 C++98
C++11
1. references, pointers, and iterators were not invalidated (C++98)
2. there was no exception safety guarantee (C++11)
1. they may be invalidated
2. added

See also

returns the number of elements
(public member function of std::{{{1}}}) [edit]