public member function

std::vector::shrink_to_fit

<vector>
void shrink_to_fit();
Shrink to fit
Requests the container to reduce its capacity to fit its size.

The request is non-binding, and the container implementation is free to optimize otherwise and leave the vector with a capacity greater than its size.

Even though the implementation may change the vector capacity on a call to this function, no reallocations are allowed to happen at this point (a reallocation may happen later if the insertion of new elements raises the vector size above its new capacity).

An alternative that forces a reallocation is to use swap:
 
vector<T>(x).swap(x);   // reallocates storage for x 


Parameters

none

Return value

none

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// vector::shrink_to_fit
#include <iostream>
#include <vector>

int main ()
{
  std::vector<int> myvector (100);
  std::cout << "1. capacity of myvector: " << myvector.capacity() << '\n';

  myvector.resize(10);
  std::cout << "2. capacity of myvector: " << myvector.capacity() << '\n';

  myvector.shrink_to_fit();
  std::cout << "3. capacity of myvector: " << myvector.capacity() << '\n';

  return 0;
}


Possible output:
1. capacity of myvector: 100
2. capacity of myvector: 100
3. capacity of myvector: 10

Complexity

Constant.

Iterator validity

No changes.

Data races

The container is modified.
No contained elements are accessed: concurrently accessing or modifying them is safe.

Exception safety

Basic guarantee: if an exception is thrown, the container is in a valid state.

See also