Вы пробовали copy_graph ?
Трудно понять, в чем проблема, не видя ошибок, но, если бы мне пришлось угадывать, я сначала убедился бы, что вы предоставляете карту vertex_index
для copy_graph
, так как она не доступна по умолчанию при использовании setS
для хранения вершин. Исходя из вашего предыдущего вопроса , похоже, что вы уже поняли это, поэтому нам просто нужно собрать все вместе.
typedef adjacency_list<setS, setS, undirectedS, NodeDataStruct, EdgeDataStruct> MyGraph;
typedef MyGraph::vertex_descriptor NodeID;
typedef map<NodeID, size_t> IndexMap;
IndexMap mapIndex;
associative_property_map<IndexMap> propmapIndex(mapIndex);
MyGraph g1, g2;
// processing g1: adding vertices and edges ...
// processing g2: adding some vertices and edges ...
int i=0;
BGL_FORALL_VERTICES(v, g2, MyGraph)
{
put(propmapIndex, v, i++);
}
g1.clear();
copy_graph( g2, g1, vertex_index_map( propmapIndex ) );
g2.clear();