#include <algorithm>
#include <functional>
#include <iosfwd>
#include <list>
#include <map>
#include <queue>
#include <sstream>
#include <stack>
#include <vector>
#include "invariant.h"
Go to the source code of this file.
|
template<class E > |
void | intersection (const typename graph_nodet< E >::edgest &a, const typename graph_nodet< E >::edgest &b, typename graph_nodet< E >::edgest &dest) |
| Compute intersection of two edge sets, in linear time. More...
|
|
template<class Container , typename nodet = typename Container::value_type> |
void | get_reachable (Container &set, const std::function< void(const typename Container::value_type &, const std::function< void(const typename Container::value_type &)> &)> &for_each_successor) |
| Add to set , nodes that are reachable from set . More...
|
|
template<typename node_index_type > |
void | output_dot_generic (std::ostream &out, const std::function< void(std::function< void(const node_index_type &)>)> &for_each_node, const std::function< void(const node_index_type &, std::function< void(const node_index_type &)>)> &for_each_succ, const std::function< std::string(const node_index_type &)> node_to_string, const std::function< std::string(const node_index_type &)> node_to_pretty) |
|
A Template Class for Graphs
Definition in file graph.h.
◆ get_reachable()
template<class Container , typename nodet = typename Container::value_type>
void get_reachable |
( |
Container & |
set, |
|
|
const std::function< void(const typename Container::value_type &, const std::function< void(const typename Container::value_type &)> &)> & |
for_each_successor |
|
) |
| |
Add to set
, nodes that are reachable from set
.
This implements a depth first search using a stack: at each step we pop a node, and push on the stack all its successors that have not yet been visited.
- Parameters
-
set | set of source nodes, must be a container with an insert(const value_type&) method. |
for_each_successor | function which given a node n and a function f , applies f on all successors of n . |
Definition at line 573 of file graph.h.
◆ intersection()
Compute intersection of two edge sets, in linear time.
Definition at line 115 of file graph.h.
◆ output_dot_generic()
template<typename node_index_type >
void output_dot_generic |
( |
std::ostream & |
out, |
|
|
const std::function< void(std::function< void(const node_index_type &)>)> & |
for_each_node, |
|
|
const std::function< void(const node_index_type &, std::function< void(const node_index_type &)>)> & |
for_each_succ, |
|
|
const std::function< std::string(const node_index_type &)> |
node_to_string, |
|
|
const std::function< std::string(const node_index_type &)> |
node_to_pretty |
|
) |
| |