Ich versuche, die Boost-Graph-Bibliothek zu verwenden, und ich bekomme einen segfault, wenn ich versuche, boost :: edge() zu verwenden. Der vollständige Code ist verfügbar here, aber hier habe ich ein Minimalprogramm gemacht, die das gleiche Problem hat (ich mit „g ++ minimal.cpp“ bin kompilieren):boost :: edge verursacht segfault
#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;
}
Wenn ich Kommentar- der add_edge, remove_edge Linien ist, die segfault nicht auftreten und das Programm druckt die erwartete
G does not have an edge 1->3
aber ist es eine Möglichkeit, solche Hacks zu vermeiden? Vielen Dank!
Dies sieht viel wie ein Bug. Vielleicht möchten Sie es auf der [Boost-Devel Mailing List] (http://news.gmane.org/gmane.comp.lib.boost.devel) anzeigen, wenn Sie auf Stackoverflow keine angemessene Antwort erhalten. – Mankarse