यदि आपके पास एकाधिक इंडेक्स के साथ boost::multi_index_container< >
है, तो इसके ऊपर पुनरावृत्ति करने के लिए स्पष्ट रूप से कई तरीके हैं - प्रत्येक अनुक्रमणिका एक तरीका परिभाषित करती है। उदाहरण के लिए, यदि आपके पास टैग T
टैग के साथ एक अनुक्रमणिका है, तो आप container.get<T>().begin()
से container.get<T>().end()
पर पुन: सक्रिय कर सकते हैं।बढ़ावा देने का बिंदु :: multi_index_container :: अनुक्रमणिका <Tag> :: प्रकार?
यदि आप फॉर-लूप में ऐसा करने का प्रयास करते हैं (और C++ 0x auto
नहीं है), तोइटरेटर का प्रकार multi_index_container<...>::index<T>::type::iterator
है। अब index<T>::type
को बढ़ावा मिलेगा :: multi_index :: detail :: order_index या संरचनात्मक रूप से समकक्ष कुछ। जैसे यह iterator
टाइपपीफ, और begin()
विधि प्रदान करेगा।
अब मेरी सवाल है, के बाद से multi_index_container< >::index<T>
केवल index<T>::type
typedef करने के लिए मौजूद है, और index<T>::type
जाना जाता है के सदस्यों, क्यों उन सदस्यों typedef index<T>
नहीं करता है? यह आपको multi_index_container<...>::index<T>::iterator
लिखने की अनुमति देगा।
इसी तरह, क्यों multi_index_container< >::index_iterator<T>
पुनरावर्तक नहीं है? multi_index_container< >::index_iterator<T>::type
है, लेकिन बूस्ट ने एक एम्बेडेड टाइपपीफ क्यों चुना? फिर ::type
केवल अव्यवस्था को जोड़ना प्रतीत होता है।
मुझे इसे हमारे कोड में देखना था क्योंकि मुझे :: प्रकार के बारे में पता नहीं था। ऐसा लगता है कि हमने उन्हें सब कुछ टाइप किया है, इसलिए यह कार्यान्वयन में दिखाई नहीं देता है। तो मुझसे कोई जवाब नहीं: मुझे इसके साथ कोई समस्या नहीं थी इसलिए मैंने कभी समझ नहीं लिया कि क्यों ... – stefaanv