Boostグラフライブラリを使用しようとしていますが、boost :: edge()を使用しようとするとセグメンテーション違反が発生します。完全なコードはここから入手できますが、ここで同じ問題のある最小限のプログラムを作成しました( "g ++ minimum.cpp"でコンパイルしています)。
#include<stdio.h>
#include<boost/graph/adjacency_list.hpp>
using namespace boost;
using namespace std;
typedef adjacency_list<> graph_t;
typedef graph_traits<graph_t>::edge_descriptor edge_descriptor;
int main(){
graph_t G;
//add_edge(1,3,G);
//remove_edge(1,3,G);
pair<edge_descriptor, bool> res = edge(1,3,G);
printf("G does %shave an edge 1->3\n", res.second ? "" : "not ");
return 0;
}
add_edge、remove_edge行のコメントを外すと、セグメンテーション違反は発生せず、プログラムは期待どおりの結果を出力します。
G does not have an edge 1->3
しかし、そのようなハッカーを回避する方法はありますか?ありがとう!