0

嗨,我有一个提升图,例如:

struct Vertex;
struct Edge;



typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, Vertex, Edge> Graph_t;


struct Vertex {
};

struct Edge {
    typedef std::vector<Graph_t::vertex_descriptor> intermediate_vertices_t;
    intermediate_vertices_t intermediate_vertices;
};

问题在于 Edge 类中的递归模板。我需要存储一个顶点向量。

4

3 回答 3

2

您可以使用adjacency_list_traits来解决这个问题。此类允许用户访问顶点和边描述符类型,而无需用户提供图的属性类型。

struct Vertex {
};

typedef boost::adjacency_list_traits<boost::vecS, boost::vecS, boost::bidirectionalS>::vertex_descriptor VertexDescriptor;
struct Edge {
    typedef std::vector<VertexDescriptor> intermediate_vertices_t;
    intermediate_vertices_t intermediate_vertices;
};
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS, Vertex, Edge> Graph_t;
于 2012-05-17T21:22:09.783 回答
0

尝试使用adjacency_list

http://www.boost.org/doc/libs/1_36_0/libs/graph/doc/adjacency_list.html

于 2011-06-28T17:09:28.043 回答
0

我最终使用了一个小的包装类,例如:

typedef Graph_t::vertex_descriptor vd_t;                           

struct iVertexWrap{                                                
    iVertexWrap(vd_t v) : v(v)
    {}                                                             
    vd_t v;
};

在 Edge 类之前转发声明它。

于 2011-07-05T14:35:28.753 回答