void assign_sources_and_targets_global(std::vector<vertex_descriptor>& sources, std::vector<vertex_descriptor>& targets, vertices_size_type numverts, GlobalToLocal global_to_local) { assert (sources.size() == targets.size()); // Do an in-place histogram sort (at least that's what I think it is) to // sort sources and targets m_rowstart.clear(); m_rowstart.resize(numverts + 1); boost::graph::detail::count_starts (sources.begin(), sources.end(), m_rowstart.begin(), numverts, keep_all(), boost::make_property_map_function(global_to_local)); boost::graph::detail::histogram_sort_inplace (sources.begin(), m_rowstart.begin(), numverts, targets.begin(), boost::make_property_map_function(global_to_local)); // Now targets is the correct vector (properly sorted by source) for // m_column m_column.swap(targets); }
inline typename vertex_subset_complement_filter<Graph, Set>::type make_vertex_subset_complement_filter(Graph& g, const Set& s) { typedef typename vertex_subset_complement_filter<Graph, Set>::type Filter; is_not_in_subset<Set> p(s); return Filter(g, keep_all(), p); }