找到一个大型boost :: unordered_map的大小

时间:2016-11-06 18:15:44

标签: c++ dictionary visual-c++ boost boost-unordered

我想找到一个boost :: unordered_map的大小,它包含一个指向由std :: string映射的类的指针。我正在做一个sizeof(unordered_map var)。是对的吗?它会给我占据它的空间吗?包括房子保持它占用?想要测量它以将它与将保存相同数据的std :: map进行比较,我也将通过sizeof(std :: map var)来测量。我想知道两者各自占用多少存储空间,哪个是更好的选择,比较速度和空间。

如果我计算尺码的方式正确并且会给我实际/正确的尺码,请告诉我,并帮助我做出正确的决定。

编辑1:

如果我试图弄大小的方法是错误的,请让我知道如何获得正确的尺寸(包括管家)

TIA

-R

2 个答案:

答案 0 :(得分:1)

sizeof()运算符仅返回对象的大小,但不返回它在堆上占用的空间(动态分配的内存)。由于地图和字符串可能很好地在堆上分配内存,这对你没有帮助。

没有简单的方法来衡量程序某些部分的总内存占用量。但是,这并非不可能。一种选择是使用自定义分配器,它记录其内存分配,并用于与要测量的实体相关的所有对象(对于地图及其对象,包括字符串)。

答案 1 :(得分:0)

您根本无法可靠地计算地图消耗的空间量。您无法访问的类型和空间。

你应该做的是问一个完全不同的问题,你想要解决的问题与你认为必要的问题有关。