如标题所示:给定一个STL容器类型的对象(例如std::vector<int>
或std::set<MyClass>
),我想知道它们的内存消耗---也就是----存储元素消耗了多少内存,每个元素的辅助数据和容器大小。我假设存储的对象不分配任何额外的内存。
对于std::vector<int> v
,我可以添加:
sizeof(std::vector<int>) + v.capacity()*sizeof(int)
因为vectors不为每个元素存储任何辅助数据。但是我如何为其他容器存储辅助数据呢?
我可以忍受非恒定时间复杂度。
1条答案
按热度按时间eyh26e7m1#
创建您自己的STL allocator并跟踪放置到它的内存请求的大小,然后添加容器本身的大小。This article很好地概述了如何创建容器。