静态分配提升图
Statically allocating boost Graph
亲爱的,我希望这一切都很容易!
我有一个图表,我想静态分配。我知道我将有 N
个节点,每个节点最多有 K << N
条边(例如,N = 1,000,000
和 K = 3
)。如果我不仅可以初始化具有一定数量的节点,还可以初始化具有预定义数量的边的图形,那将很方便。
你知道这是否可能吗?
如果没有,您是否建议放弃邻接列表的邻接矩阵?我将拥有大量的边缘,这就是为什么静态分配会很棒。
干杯!
Boost.Graph 具有压缩稀疏行图,它可以执行接近您想要的操作。它对内存非常友好。与其他 Boost 图一样,您可以声明它有向、无向等,并将属性与其元素相关联。
需要注意的是,此图是不可变的,这意味着您可以创建和填充它,但以后不会更新。生成图形时,您需要准备好所有边。在此处查看类似的 SO 主题
>我没有测试它,但考虑到enum { A, B, C, D, E, F, N };
意味着A = 0, B = 1, ..., N = 6
,Graph g(N);
似乎在编译时为N = 6
节点分配内存,并通过该N*N
边缘分配内存。似乎不可能减少或限制边的数量,除非使用无向图。
来源: http://www.boost.org/doc/libs/1_54_0/libs/graph/doc/adjacency_matrix.html
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 以下代码执行哪种内存分配(动态或静态)?
- 将 RTOS 队列对象封装在仅具有静态分配的 IQueue 自定义接口中
- 如何静态识别动态堆分配?
- 如何为静态常量模板化专用整数值分配存储
- 静态分配对象的值初始化
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 将基类分配给派生对象,反之亦然,以C++以及静态和动态对象之间的差异
- 将静态字符数组中的字符分配给动态分配的字符数组 - 访问冲突
- 动态分配的数组和静态数组之间的区别
- 将本地 OpenCV Mat 变量声明为静态以防止重新分配
- 对静态分配的子类对象进行静态分配的纯虚拟父类引用是否合法?
- C++编译时使用 constexpr 字符数组指针分配静态数组?
- 使用 MapViewOfFile 分配静态共享内存
- PC何时在if块内部分配静态char*
- GCC如何分配静态运行的数组长度
- 我正在尝试在类中动态分配静态字节板[67]
- 加载程序如何从动态模块分配/取消分配静态数据
- 使用单一实例分配静态成员
- 我如何分配静态RtMidi回调对象明智