c++ - What is the use of the nested pointer type in iterator_traits? -
मेरा अनुप्रयोग एक हाथ से निर्मित प्रॉक्सी इटरेटर / प्रॉक्सी संदर्भ जोड़ी का उपयोग करता है। मैं बूस्ट ध्यान दें : इटरेटर बिना एक अंतर्निहित प्रकार के प्रॉक्सी है नेस्टेड सदस्य हैं, इसलिए मुझे प्रश्न : नेस्टेड टाइप पहले तीन प्रकारों के विपरीत 24.2.1 सामान्य में [iterator.requirements.general] 1 [..] सभी iterators 24.4.1 इटरेटर गुण [iterator.traits] [...] इसके अतिरिक्त , प्रकार डीटर के रूप में हो सकता है Iterator? ? संदर्भ और सूचक प्रकार, अर्थात, एक इरेरेटर ऑब्जेक्ट डिफ़ॉल्ट मान एक पठनीय इटरेटर (और आज का इनपुट इटरेटर) का निष्कर्ष : जब तक प्रॉक्सी इटरेटर को इसकी अंतर्निहित std :: iterator_traits वर्ग टेम्पलेट 5 नेस्टेड प्रकार को परिभाषित करता है:
iterator_category ,
मूल्य_प्रकार ,
अंतर_प्रकार ,
सूचक और
संदर्भ ।
& lt; एल्गोरिथ्म & gt; दोनों लाइब्रेक + + और लिबस्टडीसी + + के शीर्ष लेखों को ब्राउज करना, कोई भी
value_type ,
अंतर_प्रकार और
के कई उपयोग देख सकता है Iterator_category , लेकिन केवल
संदर्भ के लिए (
std :: iter_swap के अंदर) और
pointer के लिए कोई नहीं।
iterator_facade का उपयोग करने के लिए संक्रमण करना चाहता हूं, जिससे मुझे संदर्भ प्रकार को डिफ़ॉल्ट
T & amp; से एक मनमाना प्रकार से कॉन्फ़िगर किया जा सकता है, लेकिन सूचक प्रकार के लिए ऐसा नहीं है जो < कोड> T * डिफ़ॉल्ट रूप से मैं नीडिंत
सूचक प्रकार के कुछ गहराई से छिपी उपयोग द्वारा काट नहीं पा रहा हूं।
operator-> (जिसके लिए वापसी का प्रकार
pointer होगा) के साथ संगतता की आवश्यकता नहीं है।
सूचक अंदर
iterator_traits ?
iterator_category ,
value_type और
अंतर_प्रकार (जो पिछले दो प्रकारों
सूचक और
संदर्भ अंदर
iterator_traits दिखाई देते हैं Iterator_traits प्रकट होते हैं किसी भी एल्गोरिदम द्वारा उपयोग नहीं करने के लिए, लेकिन इटरेटर आवश्यकता के अनुपालन को परिभाषित करने के लिए उपयोग किया जाता है S।
i < / कोड> जिसके लिए अभिव्यक्ति
(* i)। एम अच्छी तरह से है, अभिव्यक्ति का
i-> m उसी शब्दों के साथ < कोड> (* i) मीटर । [...]
iterator_traits & lt; इटरेटर & gt; :: संदर्भ iterator_traits & lt; इटरेटर & gt; :: सूचक
a के लिए,
* a और
a- & gt; , क्रमशः। [...]
T * और
T के लिए
सूचक और
संदर्भ निश्चित रूप से इटरेटर आवश्यकताओं को पूरा करता है। प्रॉक्सी संदर्भों के बारे में, निर्दिष्ट करता है
संदर्भ प्रकार वास्तव में एक संदर्भ नहीं है, इसलिए जब तक यह परिवर्तनीय इटरेटर के
मूल्य_प्रकार से जब
value_type एक वर्ग है, फिर भी,
operator- & gt; के माध्यम से सदस्यों तक पहुंचना अब भी संभव है। इसलिए, एक इरेरेक्टर जिसका
संदर्भ प्रकार वास्तव में नहीं है, संदर्भ में एक प्रॉक्सी में उसकी
operator-> gtc: से संदर्भित मान की प्रतिलिपि वापस करनी होगी।
iterator_facade के
ऑपरेटर-> और
ऑपरेटर [] के लिए वापसी प्रकार स्पष्ट रूप से निर्दिष्ट नहीं हैं। इसके बजाय, उन प्रकारों को आवश्यकताओं के एक सेट के अनुसार वर्णित किया जाता है, जिसे
iterator_facade कार्यान्वयन से संतुष्ट होना चाहिए।
value_type के माध्यम से
.m या
- & gt; m के सदस्यों तक पहुंचने की आवश्यकता नहीं होती है, तब तक किसी को
सूचक के अंदर
iterator_traits टाइप करें, और यहां तक कि अगर कोई भी प्रॉक्सी वायरर्स का उपयोग करता है, तो
boost :: iterator_facade सही चीज़ करेगा।
Comments
Post a Comment