समस्या पर कई बार चर्चा की गई है। अगर एक की जरूरत है क्या करें:अपूर्ण प्रकारों के साथ ग्राफ/पेड़ कार्यान्वयन
struct Node
{
::std::vector<Node> nodes_;
};
से here एक धारणा है कि (स्मार्ट) Node*
की ओर इशारा विहित समाधान हो सकता है हो जाता है। यह कुछ अतिरिक्त संकेत और एक समान प्रदर्शन हिट का तात्पर्य है। here से, हम देखते हैं कि libstdc++
::std::vector<T>
तत्कालता का समर्थन करता है, जहां T
एक अपूर्ण प्रकार है, लेकिन libc++
नहीं है। यह शायद ही पोर्टेबल है। लेकिन एक समाधान पोर्टेबल ::std::vector
लुकलाइक कंटेनर हो सकता है जो अपूर्ण प्रकारों का समर्थन करता है। अंत में, हम कर सकते हैं:
template <::std::size_t I = 0>
struct Node
{
::std::vector<Node<I + 1> > nodes_;
};
template <>
struct Node<20>
{
};
जो हमारे ग्राफ/पेड़ पर सीमाएं लगाता है। क्या Node
में Node
एस है, लेकिन ::std::vector<Node> nodes_;
की घोषणा के बिंदु पर एक अपूर्ण प्रकार है, इस तथ्य के कारण अतिरिक्त कार्यवाही मौजूद हैं?
इस के लिए एक बढ़ावा पुस्तकालय नहीं है। – zch
@zch क्या आप अपनी टिप्पणी का उत्तर देंगे? मैं स्वीकार करूंगा – user1095108