包含unordered_map的结构的大小(以字节为单位)

时间:2011-09-22 10:51:11

标签: c++ size byte unordered-map

需要找到我已实现的树数据结构占用的确切大小(以字节为单位)。节点结构如下

struct Node
{
    int  word;       
    int   count;       
    unordered_map<int, Node*> map;       

}node;   

我一直在做的是 size(int)* 2(对于单词和计数)+ map.bucket_count()*(sizeof(int)+ sizeof(Node *))并对每个节点重复执行此操作。 如果我忽略了unordered_map中存储的元素开销,这是否是正确的方法?

另外,如果我是正确的map.bucket_count()给出当前分配的包含预分配的桶的数量。我应该使用map.size()而忽略预先分配的桶吗?

或者不是所有这些,使用像MemTrack这样的工具来查找使用的内存是否更好?

1 个答案:

答案 0 :(得分:3)

  

或者不是所有这些,使用像MemTrack这样的工具来查找使用的内存是否更好?

是。外部没有人知道unordered_map或其他复杂的不透明对象需要多少内存,而一个好的内存分析器也可能会显示内存分配器本身需要多少开销。