我正在流网络上进行迭代计算,在此期间我需要记录每个源对每个边缘流量的贡献。任何一个边缘上的流量平均来自2%的源,因此我定义vector< map<int, double> > flow
,其中flow[e][s] = f
表示源e
边缘的流量s
是f
。在每次迭代中,f
中的每个flow
都会更新。
该程序的峰值内存使用量接近4 GB。这适用于(32位)Linux和OS X,但它在Windows上崩溃(似乎强加了2 GB per process limit)。
如何使用vector< map<int, double> >
接口实现基于磁盘的数据结构(或以其他方式解决此问题)?
答案 0 :(得分:2)
我已将STXXL用于类似的类型场景。值得研究。
答案 1 :(得分:0)
如果地图矢量消耗了所有内存,那么数据字段是否必须double
?改变可能有所帮助。
否则,您可以使用memory map,虽然使其与跨平台兼容会有一些工作,特别是对于映射的嵌入式数据结构。