У меня есть еще одна проблема, связанная с графической библиотекой Boost, которую я не мог ответить сам по поиску или чтению документации. Это не связано напрямую с моими другими вопросами, поэтому я подумал, что лучше начать новую тему.BGL: Как получить прямой доступ к данным узлов и ребер?
У меня есть график с расположением смежности и использование связанных свойств, чтобы получить доступ к данным узлов и ребер. Для удобства я использую typedef для моего графика. Таким образом, я могу получить доступ к данным, которые хранятся, например. для vertex_descriptor, набрав что-то вроде этого:
Graph[my_vertex_descriptor].setX(4);
Graph[my_vertex_descriptor].setY(10);
Теперь я хотел бы определить ссылку на объект данных, хранящих, чтобы иметь возможность ввести что-то подобное:
typedef Graph[vertex_descriptor]::type Vertex;
Vertex v = Graph[my_vertex_descriptor];
v.setX(4);
v.setY(10);
К этому или аналогичный подход я стараюсь избежать ненужных пересчетов отображаемого значения, к которому обращаются, используя []operator
карты и конкретный объект дескриптора. Мои вершины и ребра содержат много данных, поэтому в некоторых ситуациях мой текущий код производит много пересчетов одинакового значения для обработки этих данных. Это кажется уродливым.
Кто-нибудь знает, возможно ли достичь того, что я пытаюсь сделать?
выше должно быть на самом деле: `Bundled_vertex_property prop_v = прибудете (vertex_bundle, my_graph, vertex_descriptor)` ` Bundled_edge_property prop_e = прибудете (edge_bundle, my_graph, vertex_descriptor)` отметить также, что `` edge_bundle` и vertex_bundle` не являются переменными, они являются предопределенными дескрипторами. – 2012-11-18 00:40:51