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_generator的主要用途是在图类的定义内部,并且在这种上下文中,我们不能使用graph_traits在尚未完全定义的图类上。
默认值 graph_traits<Graph>::vertex_descriptor
OutEdgeIter 这必须与graph_traits<Graph>::out_edge_iterator.
默认值 graph_traits<Graph>::out_edge_iterator

模型

邻接迭代器适配器(类型为adjacency_iterator_generator<...>::type)是 多趟输入迭代器 的模型。

成员

邻接迭代器类型实现了 随机访问迭代器 概念所需的成员函数和运算符,但reference类型与value_type类型相同,因此operator*()按值返回。此外,它还具有以下构造函数
adjacency_iterator_generator::type(const OutEdgeIter& it, const Graph* g)

修订2001 年 8 月 19 日

� Copyright Jeremy Siek 2000. 允许复制、使用、修改、销售和分发本文档,前提是在所有副本中都出现此版权声明。本文档按“原样”提供,不提供任何明示或暗示的保证,也不保证其适用于任何目的。