साथ लगाकर की जरूरत नहीं है इस कोड (या live example) पर विचार करें:क्यों कुछ बूस्ट कार्यों नाम स्थान
#include <iostream>
#include <boost/graph/adjacency_list.hpp>
#include <boost/range/iterator_range.hpp>
using std::cout;
int main() {
boost::adjacency_list<boost::vecS, boost::vecS, boost::undirectedS> g;
add_edge(0, 1, g);
add_edge(1, 2, g);
for(auto v : make_iterator_range(vertices(g))) {
cout << v << " has " << degree(v, g) << " neighbor(s): ";
for(auto w : make_iterator_range(adjacent_vertices(v, g))) cout << w << ' ';
cout << '\n';
}
return 0;
}
क्यों कार्यों add_edge
, make_iterator_range
, vertices
, degree
और adjacent_vertices
कि बिना बूस्ट पुस्तकालय काम से आते हैं boost::
नामस्थान उपसर्ग?
मेरे लिए सबसे ज्यादा परेशान क्या है कि स्थिति के आधार पर, उपसर्ग वास्तव में कभी-कभी आवश्यक होता है। Here is an example, एक अलग ग्राफ संरचना का उपयोग करते समय संकलन त्रुटि में परिणाम होता है जिसे boost::make_iterator_range
उपसर्ग द्वारा तय किया जा सकता है।
मैंने BGL documentation के आसपास थोड़ा सा देखा, लेकिन इस मुद्दे के बारे में कुछ भी नहीं मिला। क्या यह मेरी गलती है या कुछ बीजीएल हेडर वैश्विक नामस्थान प्रदूषित कर रहे हैं? क्या यह डिजाइन द्वारा है या यह एक बग है?
तर्क-निर्भर लुकअप (एडीएल), ए.के.ए. कोएनिग लुकअप (एंड्रयू कोएनिग के बाद)। –
मैं इस प्रश्न को दोबारा खोल रहा हूं क्योंकि कोई विस्तार से समझा सकता है, क्यों लिंक कोड –
संकलित नहीं करता है एडीएल पर अन्य प्रश्न होने के बावजूद (जो खोजने के लिए काफी कठिन हैं, खासकर एडीएल शब्द खोजे बिना), यह है एक बहुत अच्छी तरह से पूछा सवाल। मुख्य चीज जिसे बेहतर किया जा सकता है यह है कि यह बूस्ट के बजाए सभी नामस्थानों के साथ होता है, लेकिन मैं इसे देखने के लिए क्लिक नहीं कर सकता हूं। – chris