2011-02-24 17 views
12

से const_iterator प्राप्त करना क्या कोई मेटाफंक्शन f है जो iterator को इसके संबंधित const_iterator पर मानचित्र करता है?इटरेटर

आईई। f<std::vector<T>::iterator>::typestd::vector<T>::const_iterator उपज चाहिए।

उत्तर

4

मुझे ऐसे मेटाफंक्शन के बारे में पता नहीं है।

सभी इटरेटर के पास एक समान const_iterator नहीं है। जैसे insert_iterator। ऐसे में इस तरह के मेटाफंक्शन को यह तय करने की आवश्यकता होगी कि इस तरह के मामलों में क्या किया जा रहा है।

0

मैं एक reverse_iterator के लिए कुछ के बारे में सोच सकते हैं: base सदस्य समारोह decltype का उपयोग कर, एक वापस iterator को पाने के लिए वापसी प्रकार निकाल सकते।

हालांकि iterator/const_iterator के लिए ऐसा कोई फ़ंक्शन नहीं है, इसलिए यह देखना मुश्किल है कि यह कैसे प्राप्त किया जा सकता है, आंतरिक टाइपिफ़ प्रदान करने से कम या स्पष्ट विशेषज्ञता की आवश्यकता होती है।

0

मुझे लगता है कि आपकी समस्या का एक सामान्य समाधान (और एक जो पोर्टेबल भी संभव नहीं है)। कम से कम मैं कल्पना नहीं कर सकता :-)।

यहां समस्या यह है कि कंटेनर const_iterator प्रकार को परिभाषित करता है। कंटेनर के लिए const_iterator प्रकार पर जाने के लिए आपको कंटेनर प्रकार निर्धारित करना होगा।

हालांकि अगर आप कंटेनर के इटेरेटर प्रकार के साथ मेटाफंक्शन पैरामीटर के रूप में शुरू करते हैं तो कंटेनर के प्रकार को पुनर्प्राप्त करना संभव नहीं है।

ज्ञात टी (रों) आप क्या चाहते हैं लेकिन प्राप्त किया जा सकता के लिए ...

0

मुझे नहीं लगता कि यह संभव है के बाद से वहाँ इटरेटर प्रकार के बीच अक्सर कोई अच्छी तरह से परिभाषित मानचित्रण है। उदाहरण के लिए, दो कंटेनर गैर-कॉन्स इटरेटर प्रकार साझा कर सकते हैं, लेकिन अलग-अलग कॉन्स इटरेटर हैं। आम तौर पर आप केवल कंटेनर प्रकारों से इटरेटर प्रकारों में मैप कर सकते हैं, लेकिन इटरेटर प्रकारों या इटरेटर प्रकार से कंटेनर प्रकार में नहीं।

संबंधित मुद्दे