静态分配提升图

Statically allocating boost Graph

本文关键字:分配 静态      更新时间:2023-10-16

亲爱的,我希望这一切都很容易!

我有一个图表,我想静态分配。我知道我将有 N 个节点,每个节点最多K << N边(例如,N = 1,000,000K = 3 )。如果我不仅可以初始化具有一定数量的节点,还可以初始化具有预定义数量的边的图形,那将很方便。

你知道这是否可能吗?

如果没有,您是否建议放弃邻接列表的邻接矩阵?我将拥有大量的边缘,这就是为什么静态分配会很棒。

干杯!

Boost.Graph 具有压缩稀疏行图,它可以执行接近您想要的操作。它对内存非常友好。与其他 Boost 图一样,您可以声明它有向、无向等,并将属性与其元素相关联。

需要注意的是,此图是不可变的,这意味着您可以创建和填充它,但以后不会更新。生成图形时,您需要准备好所有边。在此处查看类似的 SO 主题

>我没有测试它,但考虑到enum { A, B, C, D, E, F, N };意味着A = 0, B = 1, ..., N = 6Graph g(N);似乎在编译时为N = 6节点分配内存,并通过该N*N边缘分配内存。似乎不可能减少或限制边的数量,除非使用无向图。

来源: http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/adjacency_matrix.html