97 typedef std::map<vertex_type, neighbours_list, vertex_compare>
106 class graph_vertex_iterator
114 typedef ptrdiff_t difference_type;
116 typedef std::bidirectional_iterator_tag iterator_category;
119 graph_vertex_iterator();
121 graph_vertex_iterator& operator++();
122 graph_vertex_iterator operator++(
int);
123 graph_vertex_iterator& operator--();
124 graph_vertex_iterator operator--(
int);
125 reference operator*()
const;
126 pointer operator->()
const;
127 bool operator==(
const graph_vertex_iterator& it)
const;
128 bool operator!=(
const graph_vertex_iterator& it)
const;
132 graph_vertex_iterator(
typename graph_content::const_iterator it );
136 typename graph_content::const_iterator m_iterator;
144 class graph_edge_iterator
155 friend class graph_edge_iterator;
174 typedef const edge value_type;
175 typedef const edge& reference;
176 typedef const edge*
const pointer;
177 typedef ptrdiff_t difference_type;
179 typedef std::bidirectional_iterator_tag iterator_category;
182 graph_edge_iterator();
184 graph_edge_iterator& operator++();
185 graph_edge_iterator operator++(
int);
186 graph_edge_iterator& operator--();
187 graph_edge_iterator operator--(
int);
188 reference operator*()
const;
189 pointer operator->()
const;
190 bool operator==(
const graph_edge_iterator& it)
const;
191 bool operator!=(
const graph_edge_iterator& it)
const;
195 graph_edge_iterator(
typename graph_content::const_iterator it_begin,
196 typename graph_content::const_iterator it_end,
197 typename graph_content::const_iterator it_s,
198 typename neighbours_list::const_iterator it_d );
202 typename graph_content::const_iterator m_vertex_begin;
205 typename graph_content::const_iterator m_vertex_end;
208 typename graph_content::const_iterator m_vertex_iterator;
211 typename neighbours_list::const_iterator m_neighbours_iterator;
222 typedef std::reverse_iterator<vertex_iterator> reverse_vertex_iterator;
223 typedef std::reverse_iterator<edge_iterator> reverse_edge_iterator;
233 void neighbours(
const vertex_type& s, std::vector<vertex_type>& v )
const;
234 void vertices( std::vector<vertex_type>& v )
const;
236 vertex_iterator vertex_begin()
const;
237 vertex_iterator vertex_end()
const;
238 vertex_iterator vertex_begin(
const vertex_type& s )
const;
240 reverse_vertex_iterator vertex_rbegin()
const;
241 reverse_vertex_iterator vertex_rend()
const;
242 reverse_vertex_iterator vertex_rbegin(
const vertex_type& s )
const;
244 edge_iterator edge_begin()
const;
245 edge_iterator edge_end()
const;
249 reverse_edge_iterator edge_rbegin()
const;
250 reverse_edge_iterator edge_rend()
const;
251 reverse_edge_iterator edge_rbegin(
const vertex_type& s1,
256 std::size_t outer_degree(
const vertex_type& s )
const;
257 std::size_t inner_degree(
const vertex_type& s )
const;
258 std::size_t vertices_count()
const;
259 std::size_t edges_count()
const;
266 std::map<vertex_type, std::size_t, vertex_compare> m_inner_degrees;
269 std::size_t m_edges_count;
std::map< vertex_type, edge_type, vertex_compare > neighbours_list
The adjacency list of a vertex. vertex_type is the target vertex, edge_type is the label on the edge.