6

我正在对流网络进行迭代计算,在此期间我需要记录每个源对每个边缘上的流的贡献量。任何一条边上的流量平均是由 2% 的源引起的,所以我定义vector< map<int, double> > flow,其中flow[e][s] = f意味着边上的流量e由于源sf。在每次迭代中,每个finflow都会更新。

该程序的峰值内存使用量接近 4 GB。这适用于(32 位)Linux 和 OS X,但它在 Windows 上崩溃(这似乎对每个进程施加了 2 GB 的限制)。

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

4

2 回答 2

2

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

于 2012-06-18T17:05:53.543 回答
0

如果地图矢量是消耗所有内存的东西,double那么数据字段是否绝对有必要?改变可能会有所帮助。

否则,您也许可以使用内存映射,尽管使其跨平台兼容需要一些工作,尤其是对于映射的嵌入式数据结构。

于 2012-06-18T16:57:24.450 回答