Boost C++ 库

...世界上最受尊敬和专家设计的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ 编码标准

boost.png (6897 bytes)

邻接迭代器适配器

定义于头文件 boost/graph/adjacency_iterator.hpp

邻接迭代器适配器将出边迭代器 (out_edge_iterator)转换为邻接迭代器。也就是说,它接受一个遍历边的迭代器,并创建一个遍历这些边**_目标_**顶点的迭代器。使用此适配器,可以轻松地将建模为关联图的图类型添加邻接图所需的功能。

概要

namespace boost {
  template <class Graph, class VertexDescriptor, class OutEdgeIter>
  class adjacency_iterator_generator {
  public:
    typedef iterator_adaptor<...> type;
  };
}

示例

以下是使用adjacency_iterator_generator类的示例。

#include <boost/graph/adjacency_iterator.hpp>

class my_graph {
  // ...
  typedef ... out_edge_iterator;
  typedef ... vertex_descriptor;
  typedef boost::adjacency_iterator_generator<my_graph, vertex_descriptor, out_edge_iterator>::type adjacency_iterator;
  // ...
};

模板参数

参数描述
Graph (图) 图类型,必须建模为关联图
VertexDescriptor (顶点描述符) 这必须与graph_traits<Graph>::vertex_descriptor类型相同。之所以将其作为模板参数,是因为adjacency_iterator_generatoradjacency_iterator_generator的主要用途是在图类定义的**_内部_**,在这种情况下,我们不能在尚未完全定义的图类上使用graph_traits
graph_traits<Graph>::vertex_descriptor
默认值 这必须与OutEdgeIter (出边迭代器).
OutEdgeIter (出边迭代器)

graph_traits<Graph>::out_edge_iterator

遵循的模型邻接迭代器适配器(类型adjacency_iterator_generator<...>::type

)是多遍输入迭代器的模型。

成员邻接迭代器类型实现了随机访问迭代器概念所需的成员函数和运算符,但其引用类型与值类型相同,因此operator*()
adjacency_iterator_generator::type(const OutEdgeIter& it, const Graph* g)

按值返回。此外,它还具有以下构造函数修订日期

2001年8月19日