Re: STL vector
Rahul wrote:
: On Dec 23, 5:25 pm, Erik WikstrFm <Erik-wikst...@telia.com> wrote:
:: On 2007-12-23 05:53, Daniel T. wrote:
::
::
::
::: b...@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. 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.
::
:: --
:: Erik WikstrFm
:
: 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...
Because Windows and other popular 32 bit operating systems divide the
available address space as a 2 GB user space and 2 GB for the OS
itself.
Think about how many bytes you can address using a 32 bit pointer!
Bo Persson