Hi, In my application, the order in which edges are retreaved is also important to me. So my question is, when I iterate through an vertex's out_edges, do they show up in the order in which the edges are inserted, or any other principals are used in order of iteration? Example: ...... typename graph_traits<Graph>::out_edge_iterator out_i, out_end; typename graph_traits<Graph>::edge_descriptor e; for (tie(out_i, out_end) = out_edges(v, g); out_i != out_end; ++out_i) { e = *out_i; Vertex src = source(e, g), targ = target(e, g); std::cout << "(" << get(vertex_id, src) << "," << get(vertex_id, targ) << ") "; } ...... How are these edges ordered in the output? And is it right all those iterators iterates in the same principals/order? Thanks, Shufei