Grapher::EdgeList Grapher::edges() const { EdgeList result; for (VertexMap::const_iterator it = m_vertices.begin(); it != m_vertices.end(); ++it) { Vertex const & v1 = it.key(); AdjacencyList const & adjs = it.value(); for (AdjacencyList::const_iterator jt = adjs.begin(); jt != adjs.end(); ++jt) { Vertex const & v2 = jt->v; if (v1 < v2) // treat it as undirectional graph { result.append(qMakePair(v1,v2)); } } } return result; }