edge_basics.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 89 行

CPP
89
字号
//=======================================================================// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek//// Distributed under the Boost Software License, Version 1.0. (See// accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)//=======================================================================#include <boost/config.hpp>#include <iostream>#include <algorithm>#include <boost/graph/adjacency_list.hpp>using namespace std;using namespace boost;/*  Edge Basics  This example demonstrates the GGCL Edge interface  There is not much to the Edge interface. Basically just two  functions to access the source and target vertex:    source(e)  target(e)  and one associated type for the vertex type:  edge_traits<Edge>::vertex_type  Sample output:  (0,1) (0,2) (0,3) (0,4) (2,0) (2,4) (3,0) (3,1)  */template <class Graph>struct exercise_edge {  exercise_edge(Graph& g) : G(g) {}  typedef typename boost::graph_traits<Graph>::edge_descriptor Edge;  typedef typename boost::graph_traits<Graph>::vertex_descriptor Vertex;  void operator()(Edge e) const  {    //begin    // Get the associated vertex type out of the edge using the    // edge_traits class    // Use the source() and target() functions to access the vertices    // that belong to Edge e    Vertex src = source(e, G);    Vertex targ = target(e, G);    // print out the vertex id's just because     cout << "(" << src << "," << targ << ") ";    //end  }  Graph& G;};intmain(){  typedef adjacency_list<> MyGraph;  typedef pair<int,int> Pair;  Pair edge_array[8] = { Pair(0,1), Pair(0,2), Pair(0,3), Pair(0,4),                          Pair(2,0), Pair(3,0), Pair(2,4), Pair(3,1) };  // Construct a graph using the edge_array (passing in pointers  // (iterators) to the beginning and end of the array), and  // specifying the number of vertices as 5  MyGraph G(5);  for (int i=0; i<8; ++i)    add_edge(edge_array[i].first, edge_array[i].second, G);  // Use the STL for_each algorithm to "exercise" all of the edges in  // the graph  for_each(edges(G).first, edges(G).second, exercise_edge<MyGraph>(G));  cout << endl;  return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?