Boost Graph Verständnis Vertex-Erstellungsverhalten

Ich versuche, das Verhalten der Vertex-Erstellung mit der Funktion add_edge herauszufinden. Hier ist ein Beispiel

#include <iostream> 
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graph_traits.hpp>

using namespace boost;
typedef adjacency_list<> Graph;
typedef graph_traits<Graph>::vertex_iterator v_iter;

Graph g;
add_edge(1,2,g);
add_edge(1,4,g);
add_edge(2,3,g);
add_edge(2,6,g);

    std::cout << "num edges: " << num_edges(g) << "; num vertices: " << num_vertices(g) << std::endl;
for (std::pair<v_iter,v_iter> vp = vertices(g);  vp.first != vp.second; vp.first++) {
    std::cout << *vp.first << " ";
}

kehrt zurück

bash-3.2$ ./main
num edges: 4; num vertices: 7
0 1 2 3 4 5 6 

Warum werden diese Eckpunkte erstellt? Der Graph hat 1,2,3,4 und 6 als Eckpunkte, 5 insgesamt nicht 7. Es scheint, dass die Funktion Eckpunkte von 0 bis zum höchsten Wert eines Eckpunkts erstellt.

Ich weiß wirklich nicht, was hier los ist, also ist jede Hilfe sehr dankbar.

Vielen Dank im Voraus

Antworten auf die Frage(3)

Ihre Antwort auf die Frage