#include <boost/range/irange.hpp>
#include <boost/graph/graph_traits.hpp>
#include <memory>
+#include <iterator>
#include <algorithm>
#include <boost/limits.hpp>
inline void reindex_edge_list(
EdgeList& el, vertex_descriptor u, boost::disallow_parallel_edge_tag)
{
- for (typename EdgeList::iterator ei = el.begin(); ei != el.end(); ++ei)
+ typename EdgeList::iterator ei = el.begin(), e_end = el.end();
+ while (ei != e_end)
{
if (ei->get_target() > u)
{
typename EdgeList::value_type ce = *ei;
+ ++ei;
el.erase(ce);
--ce.get_target();
el.insert(ce);
}
+ else {
+ ++ei;
+ }
}
}
} // namespace detail
typedef typename OutEdgeList::size_type degree_size_type;
typedef typename OutEdgeList::iterator OutEdgeIter;
- typedef boost::detail::iterator_traits< OutEdgeIter >
+ typedef std::iterator_traits< OutEdgeIter >
OutEdgeIterTraits;
typedef
typename OutEdgeIterTraits::iterator_category OutEdgeIterCat;
// Edge Iterator
- typedef boost::detail::iterator_traits< EdgeIter > EdgeIterTraits;
+ typedef std::iterator_traits< EdgeIter > EdgeIterTraits;
typedef typename EdgeIterTraits::iterator_category EdgeIterCat;
typedef typename EdgeIterTraits::difference_type EdgeIterDiff;