在Boost图形库中,使用remove_edge会使边迭代器失效,因此删除一个顶点的所有出边的正确方法是什么?例如,我想要删除顶点0的所有出边。下面的代码片段无法正常工作。
Graph G(N);
graph_traits <Graph>::out_edge_iterator ei, ei_end;
for (boost::tie(ei, ei_end) = out_edges(0, G); ei != ei_end; ++ei) {
vertex targ = target(*ei, G);
cout << "target vtx = " << targ << endl;
if ( edge(0, targ, G).second != 0 )
remove_edge(0, targ, G);
}