BFS Visitor Adaptor

Converts a list of event visitors into a BFSVisitor for use with breadth_first_search.

Defined in: <boost/graph/breadth_first_search.hpp>
Models: BFSVisitor

Example

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/breadth_first_search.hpp>
#include <boost/graph/visitors.hpp>
#include <iostream>
#include <vector>

int main() {
    using namespace boost;
    using Graph = adjacency_list<vecS, vecS, undirectedS>;
    using Vertex = graph_traits<Graph>::vertex_descriptor;

    Graph g(6);
    add_edge(0, 1, g);
    add_edge(0, 2, g);
    add_edge(1, 3, g);
    add_edge(2, 4, g);
    add_edge(3, 5, g);

    std::vector<Vertex> pred(num_vertices(g), 0);
    pred[0] = 0;
    std::vector<int> dist(num_vertices(g), 0);

    auto vis = make_bfs_visitor(
        std::make_pair(
            record_predecessors(pred.data(), on_tree_edge()),
            record_distances(dist.data(), on_tree_edge())
        )
    );
    breadth_first_search(g, vertex(0, g), visitor(vis));

    for (std::size_t v = 0; v < num_vertices(g); ++v) {
        std::cout << "vertex " << v
                  << "  pred=" << pred[v]
                  << "  dist=" << dist[v] << "\n";
    }
}
vertex 0  pred=0  dist=0
vertex 1  pred=0  dist=1
vertex 2  pred=0  dist=1
vertex 3  pred=1  dist=2
vertex 4  pred=2  dist=2
vertex 5  pred=3  dist=3

Synopsis

template <typename EventVisitorList = null_visitor>
class bfs_visitor;

template <typename EventVisitorList>
bfs_visitor<EventVisitorList>
make_bfs_visitor(EventVisitorList ev_list);

Parameters

Parameter Description Default

EventVisitorList

One or more EventVisitors combined with std::pair.

null_visitor

Behavior

Implements all BFSVisitor event points. Each event is dispatched to the matching EventVisitor in the list. Events with no matching visitor are ignored.