【发布时间】:2024-05-02 20:05:05
【问题描述】:
我有一个包含大约 100,000 个节点和 2 亿条边的无向图。每条边都有少量与之相关的数据(5 个整数)。在我的应用程序的先前版本中,图形要小得多,将所有边简单地存储在纯文本文件中并完整读取该文件不是问题。使用我的新的更大的图表,这很快就会导致内存问题,因为边缘文件本身有几 GB。
我的图形应用程序非常简单:我只需选择一个节点并迭代它的边,直到目标节点满足某些条件。然后我迭代这个目标节点的边,重复这个过程,直到创建一个由少量边(个位数)组成的网络。
由于我一次只使用该图表的一小部分,它似乎是内存映射文件的一个很好的应用程序。但是,我不确定这将如何实现。我怎样才能只访问我感兴趣的边块(即连接到指定节点的边)?我希望使用 boost 的内存映射文件实现,但非常感谢任何指导。
【问题讨论】:
标签: c++ boost memory-mapped-files