property_writer
Writes the property value of a vertex or edge to an output iterator when an event occurs. Useful for debugging or logging during a graph traversal.
Defined in: <boost/graph/visitors.hpp>
Models: EventVisitor
Typical event: any (vertex or edge), e.g. on_discover_vertex,
on_examine_edge
To use it, wrap it in an algorithm adaptor and optionally combine it with other event visitors; see the visitors overview.
Synopsis
template <typename PropertyMap, typename OutputIterator, typename EventTag>
struct property_writer {
typedef EventTag event_filter;
property_writer(PropertyMap pa, OutputIterator out);
template <class T, class Graph>
void operator()(T x, Graph& g);
};
template <typename PropertyMap, typename OutputIterator, typename EventTag>
property_writer<PropertyMap, OutputIterator, EventTag>
write_property(PropertyMap pa, OutputIterator out, EventTag);
Template Parameters
| Parameter | Description |
|---|---|
|
A ReadablePropertyMap whose key type is the graph’s vertex or edge descriptor (depending on the event tag), and whose value type is writable to the output iterator. |
|
The output iterator the property values are written to. |
|
The event at which to write. May be any event, vertex or edge. |
Associated Types
| Type | Description |
|---|---|
|
The event tag the visitor responds to. Same type as |
Member Functions
| Member | Description |
|---|---|
|
Constructs a writer reading from the property map |
|
Reads the property of |
Non-Member Functions
| Function | Description |
|---|---|
|
Convenience factory that creates a |
Example
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/breadth_first_search.hpp>
#include <boost/graph/visitors.hpp>
#include <iostream>
#include <iterator>
int main() {
using namespace boost;
using Graph = adjacency_list<vecS, vecS, undirectedS>;
Graph g(5);
add_edge(0, 1, g);
add_edge(0, 2, g);
add_edge(1, 3, g);
add_edge(2, 4, g);
// Print vertex indices as they are discovered
std::ostream_iterator<int> out(std::cout, " ");
auto vis = make_bfs_visitor(
write_property(get(vertex_index, g), out, on_discover_vertex())
);
std::cout << "BFS discovery order: ";
breadth_first_search(g, vertex(0, g), visitor(vis));
std::cout << "\n";
}
BFS discovery order: 0 1 2 3 4