मैं शुद्ध सी ++ 11 समकक्ष के साथ वर्टेक्स या किनारों पर बीजीएल पुनरावृत्ति को प्रतिस्थापित करना चाहता हूं। (से: http://www.boost.org/doc/libs/1_52_0/libs/graph/doc/quick_tour.html) बीजीएल कोड है:"शुद्ध" सी ++ 11 विकल्प के साथ वर्टेक्स पर बीजीएल पुनरावृत्ति को बदलें?
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)] << ") ";
}
मैं यहाँ से कई सुझावों को आज़मा: Replace BOOST_FOREACH with "pure" C++11 alternative? लेकिन भाग्य के बिना।
मैं की तरह कुछ लिखने के लिए सक्षम होना चाहते हैं:
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)
{...}
क्या यह संभव है?
धन्यवाद, लेकिन आपके द्वारा प्रदान किया गया कोड भी संकलित नहीं करता है :(कृपया स्रोत कोड (अपने कोड के साथ) पर एक नज़र डालें: http://pastebin.com/Nx7WeMhU –
@ danilo2: वास्तव में क्या हैं त्रुटियां? – Xeo
यहां वे हैं: http://pastebin.com/LDLRYwNG (अतिरिक्त मैंने जोड़ा ';' लाइन 20 पर, क्योंकि इसके बिना अर्धविराम वाक्यविन्यास त्रुटि गायब है) –