我想要使用Boost圖庫創建一個名爲GraphService的類。 它應該在圖上計算各種東西並返回屬性,如節點度分佈到其他類。這是我headerfile的圖形,這就是所謂Graph.h的一部分:C++ boost圖庫分割故障與adjacency_iterator
typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS,
vertex_info, edge_info, graph_info, boost::listS> Graph;
typedef boost::graph_traits<Graph>::vertex_descriptor VertexDescriptor;
typedef boost::graph_traits<Graph>::edge_descriptor EdgeDescriptor;
typedef boost::graph_traits<Graph>::vertex_iterator VertexIterator;
typedef boost::graph_traits<Graph>::edge_iterator EdgeIterator;
typedef boost::graph_traits<Graph>::adjacency_iterator AdjacencyIterator;
這是我Headerfile對GraphService部分:
#include "Graph.h"
class GraphService {
private:
Graph g;
public:
std::vector<int> get_adjacent(int i);
}
是困擾我的一部分,是這樣的:
#include "Graph.h"
GraphService::GraphService(Graph graph) {
g = graph
}
std::vector<int> GraphService::get_adjacent(int i) {
AdjacencyIterator first, last;
std::vector<int> vertex_vector;
vertex_vector.push_back(i);
for (tie(first,last) = adjacent_vertices(i,g); first != last; ++first) {
vertex_vector.push_back(g[*first].id);
}
return vertex_vector;
}
我與單元測試測試這個功能和測試工作正常,但在我的編譯器的輸出,我看到以下錯誤消息;
/bin/sh: line 7: 20148 Segmentation fault build/Debug/GNU-Linux-x86/tests/TestFiles/f2
這似乎是指與adjacency_iterator錯誤。調試器告訴我,由於迭代器最後發生錯誤。
我試圖在腳本中運行相同的代碼,其中創建的圖形和迭代over adjacent_vertices在同一個函數中。一切工作正常。
任何人都可以幫忙嗎?
在此先感謝!
沒有看到更多的代碼,我唯一的猜測是'g'不能被初始化。考慮一個[SSCCE](http://sscce.org/)。 – pbible
這是問題所在。謝謝 – benhal