如何衡量总STL容器内存消耗?

Cyg*_*sX1 6 c++ stl

如标题所示:给定一个STL容器类型的对象(例如std::vector<int>或者std::set<MyClass>)我想知道它们的内存消耗---即---存储元素消耗了多少内存,每个元素的辅助数据和容器大小.我假设存储的对象不分配任何额外的内存.

对于std::vector<int> v我可以添加:

sizeof(std::vector<int>) + v.capacity()*sizeof(int)
Run Code Online (Sandbox Code Playgroud)

因为向量不会为每个元素存储任何辅助数据.但是我怎么能为其他容器做呢?

我可以忍受非恒定的时间复杂性.

Nec*_*lis 5

创建自己的STL分配器并跟踪放置到它的内存请求的大小,然后jsut添加容器本身的大小.本文概述了创建一个.