impulsionar gráfico, compreender o comportamento de criação de vértices

Estou tentando descobrir o comportamento da criação de vértice ao usar a função add_edge. Aqui está um exemplo:

#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 << " ";
}

retorna:

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

Por que esses vértices estão sendo criados? O gráfico possui 1,2,3,4 e 6 como vértices, 5 no total, não 7. Parece que a função cria vértices de 0 ao valor mais alto de um vértice.

Eu realmente não sei o que está acontecendo aqui, então qualquer ajuda é muito apreciada.

Muito obrigado antecipadamente.

questionAnswers(3)

yourAnswerToTheQuestion