這是我在Stackoverflow上的第一篇文章。因此,如果我違反任何發佈規則,請不要對我造成嚴重傷害。boost圖庫:合併無向圖
我正在與BGL戰鬥。對於我大學的一個項目,我需要一些圖表相關的東西。因此,我需要的一個重要功能是合併兩個無向圖。
我已經搜索了相關的問題,並發現這些主題:
Merging graphs using boost graph
copy a graph (adjacency_list) to another one
第一個不爲我工作,因爲我總是得到一個「超出範圍」 copy_graph函數內的錯誤。我敢肯定,我的這個代碼並不是我的嘗試將它應用到我的程序中的問題。
第二個合併兩個圖(與頂點有關),但新圖的邊緣信息不正確。
此代碼顯示我如何定義我的圖形。這是一個無向圖的頂點屬性(無邊緣屬性):
struct m_vertex_properties {
Element* element;
Strip* strip;
};
typedef adjacency_list<vecS, vecS, undirectedS, m_vertex_properties,no_property> MyGraph;
typedef MyGraph::vertex_descriptor NodeID;
基於第二連桿我張貼我用下面的函數上:
*static*/ void Fracture::merging(MyGraph & g1, NodeID v_in_g1, MyGraph & g2, NodeID u_in_g2) { // EDGES ARE NOT CREATED CORRECTLY!!!
typedef map<NodeID, size_t> IndexMap;
IndexMap mapIndex;
associative_property_map<IndexMap> propmapIndex(mapIndex);
int i=0;
BGL_FORALL_VERTICES(v, g2, MyGraph)
{
put(propmapIndex, v, i++);
}
copy_graph(g2, g1, vertex_index_map(propmapIndex)); //means g1 += g2
}
正如我所提到:將所得的圖形(G1)包含所有頂點(在我的測試場景2 + 3中),但由於某些原因,只有3個邊。
我希望對於比我更先進的人來說,錯誤很容易找到。老實說,我甚至都不明白這個功能的所有功能。感謝你們!
A [SSCCE](http://meta.stackexchange.com/questions/22754/sscce-how-to-provide-examples-for-programming-questions)可能會有幫助。 –