頂点またはエッジでのBGL反復を、同等の純粋なC++11に置き換えたいと思います。BGLコード(http://www.boost.org/doc/libs/1_52_0/libs/graph/doc/quick_tour.htmlから)は次のとおりです。
typename boost::graph_traits<Graph>::out_edge_iterator out_i, out_end;
typename boost::graph_traits<Graph>::edge_descriptor e;
for (std::tie(out_i, out_end) = out_edges(v, g);
out_i != out_end; ++out_i)
{
e = *out_i;
Vertex src = source(e, g), targ = target(e, g);
std::cout << "(" << name[get(vertex_id, src)]
<< "," << name[get(vertex_id, targ)] << ") ";
}
ここからいくつかの提案を試しました。BOOST_FOREACHを「純粋な」C++11の代替に置き換えますか?しかし運がない。
私は次のようなものを書けるようになりたいです:
for (auto &e : out_edges(v, g))
{ ... }
または次のようなもの:
for (std::tie(auto out_i, auto out_end) = out_edges(v, g);
out_i != out_end; ++out_i)
{...}
出来ますか?