从boost图中删除最后一个顶点会引发异常

时间:2014-05-29 16:58:53

标签: c++ boost boost-graph

这是我正在使用的代码:

typedef boost::adjacency_list<boost::vecS, boost::vecS, boost::bidirectionalS>
Graph;

Graph g;
typedef graph_traits<Graph>::vertex_descriptor Vertex;
typedef graph_traits<Graph>::edge_descriptor Edge_Desc;
typedef graph_traits<Graph>::vertex_iterator vertex_iterator;

Vertex u, v;
u = boost::add_vertex(g);
v = boost::add_vertex(g);

Edge_Desc edge;
bool inserted = false;
boost::tie(edge,inserted) = boost::add_edge(u,v,g);

boost::remove_edge(edge,g);
cout<<"\nAfter removing edge"<<endl;

cout<<"\nRemove u"<<endl;
boost::remove_vertex(u,g);

cout<<"\nRemove v"<<endl;
boost::remove_vertex(v,g);
cout<<"\n!Everything removed"<<endl;

在控制台中我看到“删除v”,我得到* .exe已停止工作窗口。因此删除最后一个顶点会引发异常。

当我抓住异常并打印出来时,它会说“分配不好”。在我的实际程序中(上面我有一个简单的测试程序),它说“抓住了std :: exception:vector太长了。看起来向量长度除以零。任何想法为什么会发生这种情况?

更新:我正在使用MS VS2010编译器和升级版本1.51

0 个答案:

没有答案