I am creating a C++ library for implementing graph algorithms. I am thinking about the appropriate representation of the class "Graph".
The are two main types of graphs (oriented / not oriented) and representations (list / matrix).
I do not have problems with algorithms...But I would like to propose a suitable and robust data structure (including the inheritance sequence of classes if needed).
Currently I do not use any special data structure representing graph, static methods have as input parameters incidence, adjacency... matrices.
Should such class keep both representations of graph or only one representation with conversion function between both representations? Which could be preferred?
This problem has been solved by a lot of people using different approaches.