c++ - 有什么方法可以找到分配给映射的内存大小?

标签 c++ dictionary

有没有什么方法可以找到分配给 C++ 中的映射的内存量/大小? 有一个函数可以找到 map 的大小,即 map 中的条目数,但是内存有没有这样的方法。 我有一张 map (字符串,字符串)。 sizeof() 总是给我 48 的大小。为什么会这样? 谢谢:)

最佳答案

不,没有。但是,对于支持 .size 方法的类,例如字符串或标准容器,您可以实现类似的功能:

template <class Key, class Value>
unsigned long mapSize(const std::map<Key,Value> &map){
    unsigned long size = sizeof(map);
    for(typename std::map<Key,Value>::const_iterator it = map.begin(); it != map.end(); ++it){
        size += it->first.size();
        size += it->second.size();
    }
    return size;
}

如果你想知道分配的内存,你可以使用.capacity :

template <class Key, class Value>
unsigned long mapCapacity(const std::map<Key,Value> &map){
    unsigned long cap = sizeof(map);
    for(typename std::map<Key,Value>::const_iterator it = map.begin(); it != map.end(); ++it){
        cap += it->first.capacity();
        cap += it->second.capacity();
    }
    return cap;
}

关于c++ - 有什么方法可以找到分配给映射的内存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11537097/

相关文章:

c++ - 使用 cuda_add_executable 命令的 Cmake 错误

c++ - 如何初始化 GLfloat 数组?

c++ - Boost spirit解析字符串以前缀开头

c# - Dictionary<> 总是按值排序,从键查找索引

c# - 不确定为什么 Regex.Replace() 在使用包含正则表达式模式(涉及捕获组)的字典时不起作用

python - 从文件读取并作为字典返回的函数?

Python 按值对字典排序,生成一个列表,如何从大到小排序?

c++ - 在 Adob​​e Crossbridge 的 Cygwin 中编译 SDL

c++ - 关于类似于 scanf 的函数的问题

python-3.x - 从列表和字典中制作字典