boost Graph kopieren und Vertex entfernen
Wie kopiere ich ein Boost-Diagramm in ein zweites Boost-Diagramm, sodass ich den aus dem ersten Diagramm extrahierten Scheitelpunktdeskriptor verwenden kann, um den zweiten zu ändern, ohne den ersten zu ändern?
Ich habe ein Boost-Diagrammg1
, aus dem ich ein paar Vertex-Deskriptoren extrahiert habe. Jetzt möchte ich diesen Vertex-Deskriptor verwenden, um eine Kopie von @ zu verarbeiteg1
genanntg2
. Wenn ich etwas verwende wie:
g2 = g1;
Um das Diagramm zu kopieren, kann ich auf die Eckpunkteigenschaften von @ zugreifeg2
mit Vertex-Deskriptor extrahiert ausg1
mit etwas wieg2[vertex_descriptor]
aber ich kann keinen Scheitelpunkt aus dem Diagramm entfernen.
boost::clear_vertex(v, _graph);
boost::remove_vertex(v, _graph);
Nichts an meinem Graphen und der Scheitelpunkt ist noch da.
Ich weiß, es gibt eincopy_graph
-Funktion verfügbar, aber ich verstehe das @ nicht wirklich (oder ich weiß nicht, wie ich es lesen sol doc und tunboost::copy_graph(g1, g2)
ergeben viele Fehler:
In file included from /usr/include/boost/graph/adjacency_list.hpp:246:0,
from /home/malcolm/AASS/sketch_maker/includes/TopologicalMap/Global.hpp:6,
from /home/malcolm/AASS/sketch_maker/includes/MapComparator/Match.hpp:4,
from /home/malcolm/AASS/sketch_maker/includes/MapComparator/Hypothese.hpp:4,
from /home/malcolm/AASS/sketch_maker/includes/MapComparator/Cluster.hpp:4,
from /home/malcolm/AASS/sketch_maker/Test/test_comparisor.cpp:11:
/usr/include/boost/graph/detail/adjacency_list.hpp: In instantiation of ‘struct boost::adj_list_any_vertex_pa::bind_<boost::vertex_index_t, boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>, topologicalmap::Place>’:
/usr/include/boost/graph/detail/adjacency_list.hpp:2568:12: required from ‘struct boost::detail::adj_list_choose_vertex_pa<boost::vertex_index_t, boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>, topologicalmap::Place>’
/usr/include/boost/graph/detail/adjacency_list.hpp:2705:12: required from ‘struct boost::adj_list_vertex_property_selector::bind_<boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>, topologicalmap::Place, boost::vertex_index_t>’
/usr/include/boost/graph/properties.hpp:217:12: required from ‘struct boost::detail::vertex_property_map<boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>, boost::vertex_index_t>’
/usr/include/boost/graph/properties.hpp:228:10: required from ‘struct boost::property_map<boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>, boost::vertex_index_t, void>’
/usr/include/boost/graph/detail/adjacency_list.hpp:1688:5: required by substitution of ‘template<class Config, class Base, class Property> typename boost::property_map<typename Config::graph_type, Property>::const_type boost::get(Property, const boost::adj_list_helper<Config, Base>&) [with Config = boost::detail::adj_list_gen<boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>, boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property, boost::listS>::config; Base = boost::undirected_graph_helper<boost::detail::adj_list_gen<boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>, boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property, boost::listS>::config>; Property = boost::vertex_index_t]’
/usr/include/boost/graph/copy.hpp:353:57: required from ‘void boost::copy_graph(const VertexListGraph&, MutableGraph&) [with VertexListGraph = boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>; MutableGraph = boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>]’
/home/malcolm/AASS/sketch_maker/includes/MapComparator/Cluster.hpp:32:150: required from here
/usr/include/boost/graph/detail/adjacency_list.hpp:2498:29: error: forming reference to void
typedef value_type& reference;
^
/usr/include/boost/graph/detail/adjacency_list.hpp:2499:35: error: forming reference to void
typedef const value_type& const_reference;
^
/usr/include/boost/graph/detail/adjacency_list.hpp:2502:47: error: forming reference to void
<Graph, value_type, reference, Tag> type;
^
/usr/include/boost/graph/detail/adjacency_list.hpp:2504:53: error: forming reference to void
<Graph, value_type, const_reference, Tag> const_type;
^
In file included from /home/malcolm/AASS/sketch_maker/includes/TopologicalMap/GraphPlace.hpp:13:0,
from /home/malcolm/AASS/sketch_maker/includes/MapComparator/Cluster.hpp:5,
from /home/malcolm/AASS/sketch_maker/Test/test_comparisor.cpp:11:
/usr/include/boost/graph/copy.hpp: In instantiation of ‘void boost::copy_graph(const VertexListGraph&, MutableGraph&) [with VertexListGraph = boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>; MutableGraph = boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>]’:
/home/malcolm/AASS/sketch_maker/includes/MapComparator/Cluster.hpp:32:150: required from here
/usr/include/boost/graph/copy.hpp:353:57: error: no matching function for call to ‘get(boost::vertex_index_t, const boost::adjacency_list<boost::listS, boost::listS, boost::undirectedS, topologicalmap::Place, topologicalmap::Gateway_struct, boost::no_property>&)’
get(vertex_index, g_in), orig2copy[0]),
Die Fehlermeldung ist größer als das, aber ich habe nur den Anfang genommen.