我的数据表示如下。
A-> B,C,D,E,F
B-> C,(D,E),F
D-> (E,F)
E-> (F,G)
F-> (G)
G-> NULL
每个字母代表一个字符串。所有字母/字符串均按字母顺序排列。 B->意味着B是接下来的每个元素的成员。因此,对于该示例,行B由集合(B,C),(B,D,E)和(B,F)组成。每行只能包含比行字符串更高的字符串。我必须以这种方式安排数据。
我应该使用像vector这样的序列容器还是像set这样的关联容器。
我正在构建小型集群以构建大型集群,因此我将从底部开始迭代所有数据。
我的猜测是一组套装?
答案 0 :(得分:2)
图形似乎是您正在寻找的,但标准C ++库(STL)没有这样的数据结构。下一个最好的选择是multimap:map是一个1:1的关联数组,其中multimap是一个1:多关联的数组。
答案 1 :(得分:0)
我会说使用散列表,其中每个字符串映射到一个向量,然后每个向量元素指向另一个向量。
这样的事情:
"b" -> {{"a", "b"},{"d"},{"e"}}