| 297 | /** Remove edges that satisfy the predicate. */ |
| 298 | template <typename Predicate> |
| 299 | void remove_edge_if(vertex_descriptor u, Predicate predicate) |
| 300 | { |
| 301 | typename Edges::iterator out = m_edges.begin(); |
| 302 | for (typename Edges::iterator it = m_edges.begin(); |
| 303 | it != m_edges.end(); ++it) { |
| 304 | if (!predicate(edge_descriptor(u, it->target()))) { |
| 305 | if (out != it) |
| 306 | *out = *it; |
| 307 | ++out; |
| 308 | } |
| 309 | } |
| 310 | m_edges.erase(out, m_edges.end()); |
| 311 | } |
| 312 | |
| 313 | private: |
| 314 | Edges m_edges; |