Ich möchte die BGL-Iteration über Scheitelpunkte oder Kanten durch reines C++ 11-Äquivalent ersetzen. Der BGL-Code (aus: http://www.boost.org/doc/libs/1_52_0/libs/graph/doc/quick_tour.html) ist:Ersetzen BGL iterieren über Eckpunkte mit "reinem" C++ 11 Alternative?
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)] << ") ";
}
ich von hier einige Vorschläge versucht: Replace BOOST_FOREACH with "pure" C++11 alternative? aber ohne Glück.
Ich möchte in der Lage sein, so etwas wie zu schreiben:
for (auto &e : out_edges(v, g))
{ ... }
oder so etwas wie:
for (std::tie(auto out_i, auto out_end) = out_edges(v, g);
out_i != out_end; ++out_i)
{...}
Ist es möglich?
Vielen Dank, aber der von Ihnen zur Verfügung gestellte Code kompiliert nicht einmal :(Bitte sehen Sie sich den Quellcode (mit Ihrem Code enthalten) an: http://pastebin.com/Nx7WeMhU –
@ danilo2: Was genau sind die Fehler? – Xeo
hier sind sie: http://pastebin.com/LDLRYwNG (Zusätzlich habe ich ';' zu Zeile 20 hinzugefügt, weil es Semikolon Syntaxfehler fehlt, ohne es) –