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?
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();