num_out_edges()
関数とかはないので、out_edges()
で得られたRangeの要素をカウントする。
#include <iostream> #include <boost/graph/adjacency_list.hpp> #include <boost/range/distance.hpp> using Graph = boost::adjacency_list< boost::listS, boost::vecS, boost::directedS >; using Edge = std::pair<int, int>; enum {A, B, C, D, N}; int main() { const std::vector<Edge> edges { {A, B}, {A, C}, {B, D}, {C, D} }; const Graph g(edges.begin(), edges.end(), N); const std::size_t num_out_edges = boost::distance(out_edges(A, g)); std::cout << num_out_edges << std::endl; }
出力:
2
追記:2014/06/06 17:54
out_degree()
(出次数)を使えばいいようです。
#include <iostream> #include <boost/graph/adjacency_list.hpp> #include <boost/range/distance.hpp> using Graph = boost::adjacency_list< boost::listS, boost::vecS, boost::directedS >; using Edge = std::pair<int, int>; enum {A, B, C, D, N}; int main() { const std::vector<Edge> edges { {A, B}, {A, C}, {B, D}, {C, D} }; const Graph g(edges.begin(), edges.end(), N); std::size_t num_out_edges = out_degree(A, g); std::cout << num_out_edges << std::endl; }
出力:
2