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

标签 c++ size byte unordered-map

需要找到我已经实现的树数据结构占用的确切字节大小。节点结构如下

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 之类的工具来查找使用的内存是否更好?

最佳答案

Or instead of all this, is it better to use tools like MemTrack to find the memory used?

是的。从外部无法得知 unordered_map 或其他复杂、不透明的对象需要多少内存,一个好的内存分析器可能还会告诉您内存分配器本身需要多少开销。

关于c++ - 包含 unordered_map 的结构的大小(以字节为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7513583/

相关文章:

c++ - 检查传递的类型接口(interface)

c++ - "sizeof"在此帮助程序中如何确定数组大小?

Go - 将 2 字节数组转换为 uint16 值

带有十六进制输入的 Bash sha1

c - 二维指针的大小

java - 通过它的值在 Java 中初始化一个字节数组?

c++ - 在 C++11 中使用静态变量是否有惩罚

C++从其他类移植成员函数

C++:仅在一个元素上使用 unique_copy

post - 增加 Amazon API Gateway 的最大 POST 大小