外部存储器数据结构,以替换地图的矢量
External memory data structure to replace vector of maps
我正在对流网络进行迭代计算,在此期间我需要记录每个源对每个边上的流的贡献程度。 任何一个边上的流量平均来自 2% 的源,所以我定义了 vector< map<int, double> > flow
,其中flow[e][s] = f
表示由于源s
在边e
上的流动是f
。 在每次迭代中,flow
中的每个f
都会更新。
该程序的峰值内存使用量接近 4 GB。 这适用于(32位)Linux和OS X,但它在Windows上崩溃(似乎每个进程施加了2 GB的限制)。
如何使用vector< map<int, double> >
接口实现基于磁盘的数据结构(或以其他方式解决此问题)?
我已经将STXXL用于类似的类型场景。可能值得研究。
如果映射的向量是消耗所有内存的,那么是否绝对有必要为数据字段提供double
?改变可能会有所帮助。
否则,您可能能够使用内存映射,尽管使其跨平台兼容将是一项艰巨的工作,尤其是对于用于映射的嵌入式数据结构。
相关文章:
- 模板参数替换失败,并且未完成隐式转换
- 为什么不;名字在地图上是按顺序排列的吗
- 基于多个条件处理地图中的所有元素
- 如何用转义符替换字符串中的所有特殊字符
- 在C++中将矢量转换为嵌套地图
- 为什么除非添加括号,否则构造函数上的模板替换会失败?
- 在一个读写器队列中,我可以用volatile替换原子吗
- 用符号版本替换对函数的所有调用
- 如何通过替换顺序代码的while循环来添加OpenMP for循环
- 替换基于地图的所有引用
- 如何区分地图中的 0 和 false?
- 地图计数确实很重要,或者只是检查是否存在
- 按平均值替换数组中的元素
- 如何从地图中删除矢量对象
- 是否有任何C++功能可以对地图进行排序?
- 将一个地图的内容附加并替换为另一个地图
- 地图插入将替换以前输入的值
- 在无序地图中替换元素
- 外部存储器数据结构,以替换地图的矢量
- 是否有一种快速的方法来替换两个地图内容