我試圖實現使用增強的圖形有三個不同的載體矢量圖形:實現使用升壓
std::vector<std::string> vertex_array;
std::vector<Edge> edge_array;
std::vector<int> weight_array;
邊緣被定義爲:
typedef std::pair<std::string, std::string> Edge;
和我的圖被定義爲:
typedef adjacency_list<vecS, vecS, undirectedS> Graph;
的陣列都填充有我從輸入文件得到的數據,所以在所述第一元件頂點向量將是類似於「A」的東西,邊緣向量中的第一個元素將是類似於(B,C)的東西,並且權重向量中的第一個元素將是邊緣向量中的第一個邊的權重,或BC這個案例。
問題是,我不是很流利的C++,而我也是新的提升和圖形。我試着在boost網站上查看示例代碼,但他們都使用數組而不是向量。我沒有嘗試這個例子代碼:
Graph g(edge_array, edge_array + sizeof(edge_array)/sizeof(Edge), num_vertices);
和我有一個爲num_vertices變量,但它仍然是給我的錯誤。
有誰知道如何創建一個邊緣,頂點和權重的矢量圖,我最終能夠使用Dijkstra的增強版?
對不起,如果這個問題確實是模糊或基本的,我真的不知道使用boost和實現圖的任何事情。
嘗試'圖G(edge_array [0],&edge_array [0] + edge_array.size(),爲num_vertices);' – 2014-12-11 03:04:43
@MattMcNabb它擺脫了紅色波浪線,但它給我的編譯器錯誤C2182:非法使用類型'void' – user3543260 2014-12-11 03:44:26