Я создаю библиотеку C ++ для реализации алгоритмов графов. Я думаю о соответствующем представлении класса «График».
Два основных типа графиков (ориентированных / не ориентированных) и представлений (список / матрица).
У меня нет проблем с алгоритмами ... Но я хотел бы предложить подходящую и надежную структуру данных (включая последовательность наследования классов при необходимости).
В настоящее время я не использую никакую специальную структуру данных, представляющую граф, статические методы имеют в качестве входных параметров встречаемость, смежность ... матрицы.
Должен ли такой класс хранить оба представления графа или только одно представление с функцией преобразования между обоими представлениями? Что может быть предпочтительнее?
Эта проблема была решена многими людьми, использующими разные подходы.