Hello All,
I need a small help in iterating through the vertices and edges of a filtered graph.
Here is some sample code of the filtered graph. (http://programmingexamples.net/wiki/CPP/Boost/BGL/FilteredGraph)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#include <iostream> #include <boost/graph/adjacency_list.hpp> #include <boost/array.hpp> #include <boost/graph/filtered_graph.hpp> #include <boost/graph/graph_utility.hpp> template <typename TGraph> struct vertex_id_filter { bool operator()(const typename boost::graph_traits<TGraph>::vertex_descriptor& v) const { return 3 < v; // keep all vertx_descriptors greater than 3 } }; int main() { using namespace boost; typedef adjacency_list<vecS, vecS, directedS, no_property, property<edge_weight_t, int> > Graph; typedef property_map<Graph, edge_weight_t>::type EdgeWeightMap; unsigned int numberOfVertices = 10; Graph g(numberOfVertices); for(unsigned int i = 0; i < numberOfVertices - 1; ++i) { add_edge(i, i+1, g); } std::cout << "Original graph:" << std::endl; boost::print_graph(g); vertex_id_filter<Graph> filter; filtered_graph<Graph, boost::keep_all, vertex_id_filter<Graph> > filteredGraph(g, boost::keep_all(), filter); // (graph, EdgePredicate, VertexPredicate) std::cout << "Filtered graph:" << std::endl; boost::print_graph(filteredGraph); return 0; }