Я пытаюсь сделать программу, которая исследует неориентированный граф неизвестного размера и строит список смежности по ходу дела. Обычно я бы сделал set<set<String>>
(комнаты обозначены строкой), но мне сказали, что это нестабильно в C ++. Какова была бы лучшая структура данных?
Это зависит от того, как вы хотите запросить информацию позже.
Я могу предложить две альтернативы:
using namespace std;
set< pair<string,string> >
или же
using namespace std;
multimap<string,string>
В первом случае set
Вы можете проверить, подключены ли два узла, но вам нужно знать оба узла (A и B), чтобы выполнить запрос. Во втором случае multimap
Для данного узла A вы можете легко получить итератор со всеми соседними узлами.
Вам нужно будет вставить пары дважды или использовать какое-то правило, например, всегда добавлять ребра в лексикографическом порядке.
Других решений пока нет …