Does clearing a vector affect its capacity?

c++, capacity, size, std, vector

Solution

No, it doesn't. The capacity of a vector never decreases. That isn't mandated by the standard but it's so both in standard library implementations of VC++ and g++. In order to set the capacity just enough to fit the size, use the famous swap trick

vector<T>().swap(foo);

In C++11 standard, you can do it more explicitly:

foo.shrink_to_fit();

Problem

I instantiate an `std::vector foo(1000)`. `foo.size()` is now 1000 and `foo.capacity()` is also 1000. If I clear the vector with `foo.clear()`, the `size()` is now 0, but what is the `capacity()`? Does the standard say anything about that?

Original source