B
bob
Does an STL vector ever reduce its capacity? (i.e. after a lot of
deletions)
deletions)
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.
Erik Wikström said:That, of course, depends on what kinds of applications you are
running. Despite the virtual memory you only have 2GB to play with
by default on a Windows machine, and for some applications that
might not be plenty.
That, of course, depends on what kinds of applications you are running.
Despite the virtual memory you only have 2GB to play with by default on
a Windows machine, and for some applications that might not be plenty.
Why do you say the memory to be only 2 GB? I know its not related to
the OP's question, but just was curious about it...
Does an STL vector ever reduce its capacity? (i.e. after a lot of
deletions)
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.