Используя Boost с простым проектом Graph, я определил два типа adjacency_list, один с направленными ребрами, а другой с неориентированными, например:
typedef adjacency_list < vecS, vertex_distributed_storage, directedS, Node > directedAdjacencyList;
typedef adjacency_list < vecS, vertex_distributed_storage, undirectedS, Node > undirectedAdjacencyList;
* Типы Node и vertex_distributed_storage можно игнорировать дляэтот пример.
Пока все здесь нормально, но моя проблема возникает, когда я пытаюсь определить функции, которые получают один из этих списков, потому что у меня может быть направленный или ненаправленный список, в зависимости от типа графика, поэтому мне нужночтобы указать универсальный тип для моих методов:
void loadGraph(directedAdjacencyList &graph);
void loadGraph(undirectedAdjacencyList &graph);
Несмотря на дублирование функций, выполняющих одинаковые вещи: S
Я также заметил, что struct undirectedS
и directedS
отличаются тольков bool одного члена внутри.
Таким образом, мои параметры могут быть объявлены универсальным типом для моих функций, чтобы я мог давать как направленный, так и ненаправленный список adjacency_list, изменять bool внутри упомянутой структуры или любую другую идею, которая работает.
Спасибо за чтение и извините за мой плохой английский.