tie(edge_iter1, edges_end1) = edges(g); sort(edge_iter1, edges_end1, ordering_1());
tie(edge_iter2, edges_end2) = edges(g); sort(edge_iter2, edges_end2, ordering_2());
tie(edge_iter3, edges_end3) = edges(g); sort(edge_iter3, edges_end3, ordering_3());
(ordering_x() specified by some struct)
Then I would have 3 different orderings of the edges available.
Would this work or should I use an iterator adapter, or create a map and (if its possible) obtain an iterator from the mapping, or something else.
I think your best bet may be simply sorting a vector of iterators:
pair