Почему edge_iterator не является integer_iterator, как vertex_iterator? Я использую неориентированный список смежности с векторами для хранения как вершин, так и ребер.Причина отказа от случайного доступа к вектору ребер в списках смежности
ответ
В списках смежности хранится список примыканий.
То есть, для каждого вершины хранится список смежных вершин.
Это означает, что вершины могут храниться в одном контейнере, но каждая вершина содержит собственный (отдельный) контейнер смежности («другие ссылки вершин»).
Это должно объяснить: нет такой вещи как «краевой контейнер», что делает невозможным непосредственное обращение к краям по индексу или как один соседний контейнер.
Примечание есть и другие модели графа (например, EdgeList понятие, как моделируется edge_list)
Большое спасибо @sehe для объяснения. Что меня отличает, это нечто вроде boost: adjacency_list
Вещь, селектор контейнера Edge используется один раз на вершину :) Обратите внимание, что это/not/требуется при моделировании EdgeList, но это способ, которым был создан adjacency_list <>. – sehe
Извините, так как это должен быть вопрос новичков, поэтому для представления adjacency_list ребра хранятся в векторе векторов для чего-то вроде этого: boost: adjacency_list
Что такое integer_iterator? – sehe