我在使用C ++ for VS10中的std :: map时遇到了问题。 当我运行这个简单的代码时
std::map<int,int>myMap;
for(size_t i=0;i<1000000;i++){
myMap[i]=i;
}
我的记忆爆炸到了256Mo,这对我来说似乎很奇怪。 如果我使用
std::vector<int>myVector(1000000);
我按预期获得4Mo。
如果有人能解释这种现象。 谢谢
答案 0 :(得分:2)
std::map
可能实现为红黑树,这意味着以下字段,假设x64:
每个项目最多可达44个字节或44 MB内存。与std::vector
情况不同,它们中的每一个都独立地是一个对象,它增加了大约24个字节的附加数据。这带来了68兆字节。这仍然是你所看到的四分之一,但至少你可以看出为什么尺寸存在巨大差异。