如何使用Boost C 复制图

How to copy a graph using boost c++?

本文关键字:复制 Boost 何使用      更新时间:2023-10-16

我在使用boost复制图表时遇到问题吗?我的代码如下:它不允许我创建索引图作为一种类型。

template <class Graph>
int abc(Graph& G){
    typename graph_traits<Graph>::vertex_descriptor NodeID;
    typedef map<size_t, NodeID> IndexMap; //It doesn't let me to create NodeID type
    typedef map<NodeID, size_t> IndexMap;
    IndexMap mapIndex;
    associative_property_map<IndexMap> propmapIndex(mapIndex);
    Graph g1, g2;
    int i=0;
    BGL_FORALL_VERTICES(v, g2, Graph)
    {
       put(propmapIndex, v, i++);
    }
    g1.clear();
    copy_graph( g2, g1, vertex_index_map( propmapIndex ) );
    g2.clear();
}
int main(){
    typedef adjacency_list<listS, vecS, undirectedS, 
        WeightProperty, property<edge_color_t, default_color_type>  MyGraphType;
    typename graph_traits<MyGraphType>::adjacency_iterator ai, ai_end;
    typename graph_traits<MyGraphType>::vertex_descriptor Vertex;
    ...
    ...
    MyGraphType G;
    ... //addition of vertices and edges
    abc(G);
}

谢谢您的帮助。

我猜

typename graph_traits<Graph>::vertex_descriptor NodeID;

应该是

typedef typename graph_traits<Graph>::vertex_descriptor NodeID;

上部变体是类型graph_traits<Graph>::vertex_descriptor的变量NodeID的声明,而后者是同一类型的类型。