Daniel T. wrote:
bob@coolgroups.com wrote:
Does an STL vector ever reduce its capacity? (i.e. after a lot
of deletions)
No, and there is no way to explicitly tell it to do so. If you
want to reduce the capacity, you need to swap the vector with one
that has the capacity you want.
For example:
void fn( vector<int>& foo ) {
// trim capacity to minimum needed
vector<int>( foo ).swap( foo );
}
What does the line do? It copy constructs a temp vector from
'foo' then swaps its contents with those that are currently in
'foo' then destroys the temp. I'm not sure I'd ever use the
idiom though. It seems pointless in a virtual memory environment,
and would probably cause too much fragmentation in one that
doesn't have virtual memory.
running. Despite the virtual memory you only have 2GB to play with