【问题标题】:External memory data structure to replace vector of maps用于替换映射向量的外部存储器数据结构
【发布时间】:2012-06-20 16:13:52
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      如果地图向量占用了所有内存,那么数据字段是否绝对有必要使用double?改变可能会有所帮助。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-09
        相关资源
        最近更新 更多