c++ - 适合集合(图形)分区的数据结构

标签 c++ data-structures stl set data-partitioning

我需要存储图形分区的数据分组节点,例如:

[节点 1, 节点 2] [节点 3] [节点 4, 节点 5, 节点 6]

我的第一个想法是只有一个简单的 vector 或整数数组,其中数组中的位置表示 node_id,它的值是某种 group_id

问题是许多分区算法依赖于对组内的节点对进行操作。使用这种方法,我认为我会浪费大量计算来搜索 vector 以找出哪些节点属于同一组。

我也可以存储为一组 STL 集合,这似乎更接近分区的数学定义,但我的印象是不建议或不需要嵌套集合,我需要修改我的内部集合我不确定是否可能。

有什么建议吗?

最佳答案

根据你想对集合做什么,你可以尝试 disjoint set data structure .在这个结构中,每个元素都有一个方法 find 返回它所属集合的“代表”。

C++ 实现在 Boost 中可用.

关于c++ - 适合集合(图形)分区的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4713658/

相关文章:

C++ 如何将数组 int[10] push_back 到 std::vector<int[10]>?

c - 如何在 C 中的结构中设置一个字符?

java - 图中两个节点之间的深度优先搜索和广度优先搜索

c++ - 透明静态文本变化

c++ - STL_algo.h 中的错误,比较指针

MySQL:从字符串列中获取分配数字

c++ - 使用 std::future 无效使用不完整类型

C++ 为容器编写分配过程

c++ - 通过接口(interface)测试实现

c++ - 多态、向下转型和虚函数