I want to iterate through a graph and remove edges, calculate the number of connected components, and then add the removed edges back again to the graph.
I am stuck at the place where I should assign the edge iterator to the first and last edge of the graph
edge_iter ei,ei_end,next;
    ei = edges(g).first;
It doesn't seem to work even like this:
tie(ei,ei_end) = edges(g);
I get the following error:
no viable overloaded "="
what does this mean?
Here is my program for now:
  using namespace boost;
  using namespace std;
    typedef adjacency_list <listS, vecS, undirectedS> Graph;
    typedef graph_traits < Graph >::edge_descriptor Edge;
    typedef std::pair<int,int> E;
    typedef graph_traits<Graph>::vertex_descriptor Vertex;
    typedef property_map<Graph, vertex_index_t>::type IndexMap;
    typedef std::pair<int,int> E;
    typedef graph_traits<Graph>::vertex_iterator vertex_iter;
    typedef graph_traits<Graph>::out_edge_iterator edge_iter;
    typedef property_map<Graph, vertex_index_t>::type VertexIndexMap;
  int main(int,char*[])
  {
   int num_nodes,num_edges;
   cin >> num_nodes >> num_edges;
   Graph g(num_nodes);
    for(int i = 0;i < num_edges; i++) // i/p edges into graph g
    {
        int e1,e2;
        cin >> e1 >> e2;
        Edge e;
        bool success;
        tie(e,success) = add_edge(e1-1, e2-1, g);
    }
    //graph entry completed
    edge_iter ei,ei_end,next;
    ei = edges(g).first;
				
                        
You got the graph edges with
edges(g). However,edge_iteris defined as theout_edge_iterator.These are not the same (I think for all graph models that have out_edge collections).
So, either,
or
depending on what you are trying to achieve, functionally