外部存储器数据结构替换地图矢量

时间:2012-06-18 16:32:10

标签: c++ algorithm memory data-structures stl

我正在流网络上进行迭代计算,在此期间我需要记录每个源对每个边缘流量的贡献。任何一个边缘上的流量平均来自2%的源,因此我定义vector< map<int, double> > flow,其中flow[e][s] = f表示源e边缘的流量sf。在每次迭代中,f中的每个flow都会更新。

该程序的峰值内存使用量接近4 GB。这适用于(32位)Linux和OS X,但它在Windows上崩溃(似乎强加了2 GB per process limit)。

如何使用vector< map<int, double> >接口实现基于磁盘的数据结构(或以其他方式解决此问题)?

2 个答案:

答案 0 :(得分:2)

我已将STXXL用于类似的类型场景。值得研究。

答案 1 :(得分:0)

如果地图矢量消耗了所有内存,那么数据字段是否必须double?改变可能有所帮助。

否则,您可以使用memory map,虽然使其与跨平台兼容会有一些工作,特别是对于映射的嵌入式数据结构。