summaryrefslogtreecommitdiffstats
path: root/src/boost/libs/graph/example/edge-iter-constructor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/libs/graph/example/edge-iter-constructor.cpp')
-rw-r--r--src/boost/libs/graph/example/edge-iter-constructor.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/boost/libs/graph/example/edge-iter-constructor.cpp b/src/boost/libs/graph/example/edge-iter-constructor.cpp
new file mode 100644
index 000000000..84eb6c2df
--- /dev/null
+++ b/src/boost/libs/graph/example/edge-iter-constructor.cpp
@@ -0,0 +1,49 @@
+//=======================================================================
+// Copyright 2001 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee,
+//
+// 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 <fstream>
+#include <boost/graph/adjacency_list.hpp>
+#include <boost/graph/graph_utility.hpp>
+
+using namespace boost;
+
+template < typename T >
+std::istream& operator>>(std::istream& in, std::pair< T, T >& p)
+{
+ in >> p.first >> p.second;
+ return in;
+}
+
+int main(int argc, const char** argv)
+{
+ typedef adjacency_list< listS, // Store out-edges of each vertex in a
+ // std::list
+ vecS, // Store vertex set in a std::vector
+ directedS // The graph is directed
+ >
+ graph_type;
+
+ std::ifstream file_in(argc >= 2 ? argv[1] : "makefile-dependencies.dat");
+ typedef graph_traits< graph_type >::vertices_size_type size_type;
+ size_type n_vertices;
+ file_in >> n_vertices; // read in number of vertices
+
+ graph_type g(n_vertices); // create graph with n vertices
+
+ // Read in edges
+ graph_traits< graph_type >::vertices_size_type u, v;
+ while (file_in >> u)
+ if (file_in >> v)
+ add_edge(u, v, g);
+ else
+ break;
+
+ assert(num_vertices(g) == 15);
+ assert(num_edges(g) == 19);
+ return 0;
+}