Я новичок в библиотеке графов Boost и столкнулся с концептуальным препятствием. Вместо того, чтобы создавать, вероятно, очень хакерское исправление, я обращаюсь к идеям, которые уважают хорошие практики.
У меня есть направленный мультиграф, реализованный в виде повышения adjacency_matrix. Я определил пользовательские ребра и вершинные структуры вдоль этих линий, добавив еще несколько записей:
struct Vertex
{
int id;
std::pair <double, double> coords;
};
struct Edge
{
double distance;
double cost;
std::string name;
};
Затем график строится из информации, считанной из CSV, содержащей координаты станций и расстояния, полученные из графоппера. Я определяю график, как показано в документации adjacency_matrix, используя мои структуры вершин и ребер
typedef boost::adjacency_matrix<boost::directedS, Vertex, Edge> Graph;
Проблема: у меня есть std :: векторы объектов ребер, соответствующих циклам в графе. Я хотел бы вычислить пересечение двух циклов как набор ребер.
Изначально я хотел использовать set_intersection, но для этого мне пришлось бы писать компараторы для моих краевых объектов. Я понял, что выполнение этого, вероятно, будет дублировать функциональность уже в Boost. Я просмотрел документацию, но не нашел очевидного ответа.
В настоящее время я думаю о том, чтобы определить карту свойств для ребер и получить индексы ребер, затем сравнить их, затем перевести индексы обратно в ребра и добавить их в unsorted_set, что кажется плохим решением и кажется как будто есть лучший способ. Любые идеи будут оценены, спасибо!