On 2007-12-23 05:53, 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.
That, of course, depends on what kinds of applications you are running.
a Windows machine, and for some applications that might not be plenty.