C++ 使用boost';s内存映射文件以存储图形数据

C++ 使用boost';s内存映射文件以存储图形数据,c++,boost,memory-mapped-files,C++,Boost,Memory Mapped Files,我有一个无向图,有大约100000个节点和2亿条边。每条边都有少量与其相关联的数据(5整数)。在我的应用程序的早期版本中,图形要小得多,简单地将所有边存储在纯文本文件中并读取整个文件并不是问题。在我的新的、更大的图形中,这会很快导致内存问题,因为边缘文件本身就是几GB 我的图形应用程序非常简单:我只需选择一个节点并迭代其边,直到目标节点满足某些条件。然后我迭代这个目标节点的边,重复这个过程,直到创建一个由少量边(单个数字)组成的网络 因为我一次只利用了这个图的一小部分,所以它似乎是一个很好的内存

我有一个无向图,有大约100000个节点和2亿条边。每条边都有少量与其相关联的数据(5整数)。在我的应用程序的早期版本中,图形要小得多,简单地将所有边存储在纯文本文件中并读取整个文件并不是问题。在我的新的、更大的图形中,这会很快导致内存问题,因为边缘文件本身就是几GB

我的图形应用程序非常简单:我只需选择一个节点并迭代其边,直到目标节点满足某些条件。然后我迭代这个目标节点的边,重复这个过程,直到创建一个由少量边(单个数字)组成的网络


因为我一次只利用了这个图的一小部分,所以它似乎是一个很好的内存映射文件应用程序。但是,我不确定这在实现方面如何工作。如何仅访问感兴趣的边块(即连接到指定节点的边)?我希望使用Boost的内存映射文件实现,但是任何指导都是非常值得赞赏的。

< P>我认为在C++中从头开始这样做是很困难的。即使在Boost的帮助下。因为目标平台上的内存有限。因此,您必须非常仔细地设计数据结构。不过,我建议您可以尝试使用neo4j等图形数据库或PostGIS等空间数据库。哪个已经在文件系统上实现了图形数据结构。

我没有看到问题中隐含的空间信息?是否有某种方式可以使空间索引普遍适用于图形算法?空间索引可用于解析图形算法。因为网络数据结构在PostGIS这样的空间数据库中得到了很好的实现。