removes an edge. Invalidates edge iterators for the source node
| 326 | |
| 327 | // removes an edge. Invalidates edge iterators for the source node |
| 328 | void DeleteEdge(const NodeIterator source, const EdgeIterator e) |
| 329 | { |
| 330 | Node &node = node_array[source]; |
| 331 | --number_of_edges; |
| 332 | --node.edges; |
| 333 | BOOST_ASSERT(std::numeric_limits<unsigned>::max() != node.edges); |
| 334 | const unsigned last = node.first_edge + node.edges; |
| 335 | BOOST_ASSERT(std::numeric_limits<unsigned>::max() != last); |
| 336 | // swap with last edge |
| 337 | edge_list[e] = edge_list[last]; |
| 338 | makeDummy(last); |
| 339 | } |
| 340 | |
| 341 | // removes all edges (source,target) |
| 342 | int32_t DeleteEdgesTo(const NodeIterator source, const NodeIterator target) |