gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:28:23 25 4
gpt4 key购买 nike

有没有什么方法可以找到分配给 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com