Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/libs/graph/example/edge_basics.cpp @ 47

Last change on this file since 47 was 29, checked in by landauf, 16 years ago

updated boost from 1_33_1 to 1_34_1

File size: 2.2 KB
Line 
1//=======================================================================
2// Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
3// Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
4//
5// Distributed under the Boost Software License, Version 1.0. (See
6// accompanying file LICENSE_1_0.txt or copy at
7// http://www.boost.org/LICENSE_1_0.txt)
8//=======================================================================
9
10#include <boost/config.hpp>
11#include <iostream>
12#include <algorithm>
13#include <boost/graph/adjacency_list.hpp>
14
15using namespace std;
16using namespace boost;
17
18
19/*
20  Edge Basics
21
22  This example demonstrates the GGCL Edge interface
23
24  There is not much to the Edge interface. Basically just two
25  functions to access the source and target vertex:
26 
27  source(e)
28  target(e)
29
30  and one associated type for the vertex type:
31
32  edge_traits<Edge>::vertex_type
33
34  Sample output:
35
36  (0,1) (0,2) (0,3) (0,4) (2,0) (2,4) (3,0) (3,1)
37
38 */
39
40
41
42template <class Graph>
43struct exercise_edge {
44  exercise_edge(Graph& g) : G(g) {}
45
46  typedef typename boost::graph_traits<Graph>::edge_descriptor Edge;
47  typedef typename boost::graph_traits<Graph>::vertex_descriptor Vertex;
48  void operator()(Edge e) const
49  {
50    //begin
51    // Get the associated vertex type out of the edge using the
52    // edge_traits class
53    // Use the source() and target() functions to access the vertices
54    // that belong to Edge e
55    Vertex src = source(e, G);
56    Vertex targ = target(e, G);
57
58    // print out the vertex id's just because
59    cout << "(" << src << "," << targ << ") ";
60    //end
61  }
62
63  Graph& G;
64};
65
66
67int
68main()
69{
70  typedef adjacency_list<> MyGraph;
71
72  typedef pair<int,int> Pair;
73  Pair edge_array[8] = { Pair(0,1), Pair(0,2), Pair(0,3), Pair(0,4), 
74                         Pair(2,0), Pair(3,0), Pair(2,4), Pair(3,1) };
75
76  // Construct a graph using the edge_array (passing in pointers
77  // (iterators) to the beginning and end of the array), and
78  // specifying the number of vertices as 5
79  MyGraph G(5);
80  for (int i=0; i<8; ++i)
81    add_edge(edge_array[i].first, edge_array[i].second, G);
82
83  // Use the STL for_each algorithm to "exercise" all of the edges in
84  // the graph
85  for_each(edges(G).first, edges(G).second, exercise_edge<MyGraph>(G));
86  cout << endl;
87  return 0;
88}
Note: See TracBrowser for help on using the repository browser.