I've found measuring memory usage with STL containers to be difficult as they have their own allocator and unless you're using reserve() often end up allocating extra space for things. Dr Dobbs had an interesting article a long time ago around optimizing allocators [1] and also memory management was one of the main reasons that Electronic Arts rolled their own variant of the STL [2]. I use a lot of STL for convenience but have been burned enough times that when memory consumption his high or has heavy usage I manage it manually and make sure to use a modern allocator like jemalloc or tcmalloc[3].
[1] http://www.drdobbs.com/cpp/improving-performance-with-custom... [2] http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n227... [3] http://locklessinc.com/benchmarks_allocator.shtml