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