title: stl vector size on 64-bit machines
body: <p>I have an application that will use millions of vectors.</p>
  
  <p>It appears that most implementations of std::vector use 4 pointers (_First, _Last, _End, and _Alloc), which consumes 32 bytes on 64-bit machines.  For most "practical" use cases of vector, one could probably get away with a single pointer and two 'unsigned int' fields to store the current size &amp; allocated size, respectively.  Ignoring the potential challenge of supporting customized allocation (instead of assuming that allocations must go through the global new &amp; delete operator), it seems that it is possible to build an STL compliant vector class that uses only 16 bytes (or at worst 24 bytes to support the _Alloc pointer).</p>
  
  <p>Before I start coding this up, 1) are there any pitfalls I should be aware of and 2) does an open source implementation exist?</p>