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 #include
#include #include
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 > Graph;
typedef property_map::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
filteredGraph(g, boost::keep_all(), filter); // (graph, EdgePredicate,
VertexPredicate)
std::cout << "Filtered graph:" << std::endl;
boost::print_graph(filteredGraph);
return 0;}
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Here is my question.
How do I iterate through the vertices and edges of "filteredGraph".
I wanted to use the functions
vertices( filteredGraph) and edges(filteredGraph)
seems that we cannot use these functions as in the case of filtered graphs
they return filtered_iterators.
Please, can some one extend the above example and show me how to iterate
through the vertices and edges.
Thanks and Regards,
Srinivas Boppu