【发布时间】:2011-11-22 17:41:21
【问题描述】:
需要找到我实现的树数据结构占用的确切大小(以字节为单位)。节点结构如下
struct Node
{
int word;
int count;
unordered_map<int, Node*> map;
}node;
我一直在做的是 size(int)*2(for word and count) + map.bucket_count() * (sizeof(int) + sizeof(Node*)) 并为每个节点重复执行此操作。 如果我忽略了 unordered_map 中存储的元素开销,这是正确的方法吗?
另外,如果我是正确的,map.bucket_count() 会给出当前分配的桶数,包括预分配的桶数。我应该改用 map.size() 来忽略预先分配的存储桶吗?
或者,与其使用所有这些,不如使用 MemTrack 之类的工具来查找已使用的内存?
【问题讨论】:
-
由于哈希映射的每个桶都包含可变数量的条目,因此您将能够在空节点的大小上进行刺探,但具有子节点的节点将具有可变大小。
-
如果你想做一个实验,你可以替换 new-operator 并在你将元素插入地图时观察分配。
-
是,,,,,,,,,,,,,,,,,,,,
-
不完全重复。
标签: c++ size byte unordered-map