おそらく、boost のグラフ ライブラリのバグですが、助けていただけると助かります。
前の質問で示したように、グラフから頂点を削除して再度追加すると問題が発生します。
私の問題は少し異なります。boost::labeled_graph
オブジェクト ポインターをラベルとして使用しています。anObject
特定のオブジェクトへのポインターであるとしaGraph
ますboost::labeled_graph
。次に、次のコードが実行されます。
clear_vertex_by_label(anObject, aGraph);
aGraph.remove_vertex(anObject);
Vertex v = aGraph.vertex(anObject);
例外が発生すると予想していましたが、代わりv
に の頂点のようaGraph
です。現在、次の問題が発生しています(これは でのみ発生すると思いますboost::labeled_graph
)。
次のコードを実行すると:
clear_vertex_by_label(anObject, aGraph);
aGraph.remove_vertex(anObject);
Vertex v = aGraph.add_vertex(aSecondObject);
Vertex v2 = aGraph.vertex(anObject);
Vertex v3 = aGraph.vertex(aSecondObject);
このコードの実行後v == v2 == v3
、それは正しくありません。
この問題を解決する方法を知っている人はいますか? グラフからラベルを完全に削除する可能性はありますか? 頂点自体はもう同じではありませんが (または存在しなくても)、ラベルはまだ存在し、同じ頂点ノードを「指している」と思います。
ありがとう!