具有整数键的C高效紧凑地图

我有200套约50,000个在0到500,000范围内的唯一整数,我需要映射到另一个小值(整数对,值无关,因此无需按需计算).

我尝试使用std :: unordered_maps,它使用了大约50MB(在VS2015堆诊断工具中进行了测量),并且在性能不错的情况下,我希望降低此内存的使用量(打算在某些500MB的小型云服务器上使用后台服务) .

实际上,我的初始版本是200个单独的std :: unordered_map< int,std :: pair< int,int>>.

一种选择似乎是排序数组并使用二进制搜索,但是还有其他选择吗?

最佳答案
我认为,如果您不对矢量进行排序,就可以对其进行排序.这确实是节省空间的,即没有指针开销.

如果您需要更好的性能,则不要介意一些第三方库.您可以尝试使用sparse_hash_map,它以很少的空间开销实现了哈希映射.

转载注明原文:具有整数键的C高效紧凑地图 - 代码日志