2012-10-14 39 views
1

我想使用dfs算法創建圖的搜索樹。我得到了個遍我的代碼編譯錯誤就是這樣(編譯錯誤很長,所以我不粘貼):錯誤的使用bgl與dfs構建搜索樹

typedef adjacency_list <vecS, vecS, undirectedS> Graph; 
typedef graph_traits <Graph>::edge_descriptor Edge; 
typedef graph_traits <Graph>::vertex_descriptor Vertex; 

typedef pair<int, int> E; 
vector<E> edges; 

Graph g(edges.begin(), edges.end(), n); 

vector<Vertex> p(n); 
Vertex s = vertex(0,g); 

breadth_first_search(g, s, visitor(record_predecessors(&p[0], on_tree_edge()))); 

部分:

instantiated from here 
/usr/include/boost/graph/breadth_first_search.hpp:39:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘initialize_vertex’ 
/usr/include/boost/graph/breadth_first_search.hpp:40:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘discover_vertex’ 
/usr/include/boost/graph/breadth_first_search.hpp:41:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘examine_vertex’ 
/usr/include/boost/graph/breadth_first_search.hpp:42:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘examine_edge’ 
/usr/include/boost/graph/breadth_first_search.hpp:43:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘tree_edge’ 
/usr/include/boost/graph/breadth_first_search.hpp:44:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘non_tree_edge’ 
/usr/include/boost/graph/breadth_first_search.hpp:45:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘gray_target’ 
/usr/include/boost/graph/breadth_first_search.hpp:46:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘black_target’ 
/usr/include/boost/graph/breadth_first_search.hpp:47:7: error: ‘struct boost::predecessor_recorder<long unsigned int*, boost::on_tree_edge>’ has no member named ‘finish_vertex’ 
make: *** [file] Error 1 
+0

什麼樣的編譯錯誤? –

+0

請發佈整個代碼,一些typedefs和變量缺失 –

+0

好吧我編輯它。一般來說,這些東西是形式上的提升。 (我使用boost命名空間) – gregory561

回答

3

breadth_first_search期望一個BFSVisitorrecord_predecessors返回EventVisitor。您需要使用make_bfs_visitor才能使其工作。

breadth_first_search(g, s, visitor(make_bfs_visitor(record_predecessors(&p[0], on_tree_edge()))));