计算机数据结构---图(graph): Boost Graph Library 初步使用教程 (1)

Boost Graph Library 是c++中实现结构性能比较好,也比较省心的一个库,但是官方文档让人看的比较累。这里搬运油管上的一个英文视频,小哥讲的也比较清楚,大家可以去看看原视频。文中代码可以在小哥的github中找到。


使用Boost Graph Libary时需要考虑三件事情:

  1. 如何保存你的图(graph)结构
  2. 如何向节点(vertices)和边(edge)添加属性
  3. 如何获得(get)这些属性并在算法中使用

这里我们主要学习 boost::adjacency_list

下面就代码进行分块讲解,再次提醒代码地址—>点这里


#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/graphviz.hpp>
#include <boost/graph/properties.hpp>
#include <boost/property_map/property_map.hpp>
#include <boost/graph/named_function_params.hpp>
// the predefined property types are listed here:
// http://www.boost.org/doc/libs/1_64_0/libs/graph/doc/using_adjacency_list.html#sec:adjacency-list-properties
// http://www.boost.org/doc/libs/1_64_0/libs/graph/doc/bundles.html

头文件


void example0()
{
   
  // a simple adjaceny list with no extra properties.
  typedef boost::adjacency_list<boost::vecS, boost::vecS,
                                boost::directedS,
                                boost::no_property,
                                boost::no_property
                                > MyGraphType;

  MyGraphType G;
  auto v1 = add_vertex(G);
  auto v2 = add_vertex(G);
  auto e = add_edge(v1, v2, G);


  auto vpair = vertices(G);
  for(auto iter=vpair.first; iter!=vpair.second; iter++) {
   
    std::cout << "vertex " << *iter << std::endl;
  }

  auto epair = edges(G);
  for(auto iter=epair.first; iter!=epair.second; iter++) {
   
    std::cout << "edge " << source(*iter, G) << " - " << target(*iter, G) 
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值