BGL学习00---开始

来源:互联网 发布:知肤泉水光面膜怎么样 编辑:程序博客网 时间:2024/05/16 00:39
这篇blog是我学习boost之BGL的开始。BGL是Boost Graph Library的缩写,是基于boost的一个强大的图论函数库。其采用了C++泛型编程(Generic Programming)的思想,因而有强大的通用性、扩展性和高效率。从今天开始我将系统地学习这个库,基本想法是逐个学习其自带的所有例子。通常,这 些例子位于目录$BOOST/libs/graph/example之下。

当然,在此之前,我已经基本熟悉了boost的使用。我的使用环境是:
  • 操作系统:Cygwin/Windows XP
  • GCC版本:3.4.4
  • Boost版本:1.34.1
同时,我会使用Graphviz来可视化这些图。

一、帮助文档
-------------------------------------------
首先,我熟悉了BGL的online帮助文档。这些文档实际上就是书《The Boost Graph Library》的内容,而boost之BGL库也自带这些文档,在目录$BOOST/libs/graph/doc/之下。要了解BGL,以下几个章节相当重要:
  • 6. A Quick Tour of the Boost Graph Library.
  • 8.1 Property Maps
  • 8.2 The adjacency_list class
  • 11. The Boost Graph Interface
以上图片则显示了BGL的STL的对比。在帮助文档的章节1. Introduction to the BGL有对STL和BGL泛型编程特征的比较。STL作为泛型编程的3个方式:
  1. Algorithm/Data-Structure Interoperability
  2. Extension through Function Objects/Functor
  3. Element Type Parameterization
正好在BGL中也有对应:
  1. Algorithm/Data-Structure Interoperability
  2. Extension through Visitors
  3. Vertex and Edge Property Multi-Parameterization
而在章节20. Traits classes则是BGL中,就图论的应用,所定义的特别类型,也是上图中Property Accessor所指的内容:
  1. graph_traits
  2. adjacency_list_traits
  3. property_map
以上这些,我都将在以后的学习中慢慢体会。
原创粉丝点击