Как мне сохранить этот набор данных в C ++ (какие контейнеры я использую)? - PullRequest
2 голосов
/ 07 июня 2011

У меня есть данные, представленные следующим образом.

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).Каждая строка может содержать только строки выше, чем строка строки.Я должен расположить данные таким образом.

Должен ли я использовать контейнер последовательности, такой как вектор, или ассоциативный контейнер, такой как set.

Я строю маленькие кластеры, чтобы сделать большие кластеры, поэтому я будуперебирая все данные, начиная снизу вверх.

Я думаю, будет набор множеств?

Ответы [ 2 ]

2 голосов
/ 07 июня 2011

Кажется, вам нужен график, но стандартная библиотека C ++ (STL) не имеет такой структуры данных. Следующая лучшая ставка - мультикарта: карта представляет собой связанный массив 1: 1, а мультикарта - это связанный массив 1: много.

0 голосов
/ 07 июня 2011

Я бы сказал, используйте хеш-таблицу, где каждая строка отображается на вектор, и в свою очередь каждый элемент вектора указывает на другой вектор.

Так что-то вроде этого:

"b" -> {{"a", "b"},{"d"},{"e"}}
...