2013-01-18 14 views
23

मैं VC11 के सी ++ 11 सुविधाओं पर VC11 Blog पढ़ रहा हूँ जब मैं डरावना iterators विषय के लिए आए हैं।एससीरीआई इटरेटर्स क्या हैं?

डरावना iterators क्या हैं और कैसे यह मेरी सी ++ कोडिंग अनुभव प्रभावित करता है?

+3

वे में वर्णित हैं [n2980] (http://www.open-std.org/jtc1/sc22/WG21/docs/papers/2009/n2980.pdf) और [n2911] (http: // www। open-std.org/jtc1/sc22/WG21/docs/papers/2009/n2911.pdf)। क्या आपने उन कागजात पढ़े हैं? – Mankarse

+5

http://blogs.msdn.com/b/vcblog/archive/2012/04/06/10291485.aspx – Macmade

+1

मैं हमेशा चाहती थी कि 'std :: वेक्टर :: iterator' एक सादे पुराने' टी * 'होगा । इसके अलावा SCARYer कुछ भी नहीं है। – ybungalobill

उत्तर

12

यदि आप का उपयोग कर रहे हैं, तो SCARED प्राप्त करने की कोई आवश्यकता नहीं है ... बस उनके SCARY-ness को अनदेखा करें।

यदि आप बना रहे हैं, तो इसका मतलब है कि आपको अपने इटरेटर को कंटेनर के आवंटक प्रकार से और अन्य जेनेरिक पैरामीटर को कंटेनर से मुक्त करना है जो इटरेटर को प्रभावित नहीं करता है।

+1

जिज्ञासा से, किसी भी दिए गए ऑब्जेक्ट के लिए गैर-डिफ़ॉल्ट आवंटक के साथ, या जहां कोई ऑब्जेक्ट एक गैर-डिफ़ॉल्ट आवंटक होगा, तो यह होगा कि आपके कंपाइलर पर भरोसा करने के बजाय 'decltype' का उपयोग करना बेहतर नहीं होगा एससीएरी इटरेटर्स लागू करता है? उदाहरण के लिए, यदि आप किसी कारण से 'std :: vector > vTerribleIdea', 'decltype (vTerribleIdea) :: iterator' सही पुनरावर्तक में विस्तारित करेगा, भले ही इटरेटर बंधे हों आवंटक के लिए या नहीं। [Http://ideone.com/MLHhCa देखें, या कुछ और पठनीय के लिए इसे एमएसवीसी के माध्यम से चलाएं। ] –

+1

मैं कितना डरावना iterators पूर्व मौजूदा कोड के लिए उपयोगी होते देख सकते हैं, और संकलक यह गैर-डिफ़ॉल्ट iterators के लिए खाते में लिखा जा बिना ठीक से कोड को संभालने के लिए अनुमति देते हैं, लेकिन वे अनावश्यक हैं जब नए लेखन, प्रकार स्वतंत्र 'decltype' की वजह से कोड, या क्या 'decltype' के साथ स्पष्ट रूप से इटरेटर प्रकार निर्दिष्ट करने पर SCARY व्यवहार का उपयोग करने के लिए कुछ लाभ है जिसे मुझे पता नहीं है? [उन संकलकों की गणना नहीं करना जो सी ++ 11-अनुरूप नहीं हैं, वे आम तौर पर एससीरीआई इटरेटर्स या 'decltype' का समर्थन नहीं करेंगे।] –

2

जुड़ा हुआ पीडीएफ से, http://www.open-std.org/jtc1/sc22/WG21/docs/papers/2009/n2911.pdf

परिवर्णी शब्द डरावना पर कार्य और initializations कि कदाचित गलत (सामान्य मापदंडों परस्पर विरोधी से विवश लिया) हैं, लेकिन वास्तव में सही कार्यान्वयन (संघर्ष द्वारा स्वेच्छापूर्ण के साथ काम का वर्णन करता है की वजह से कम निर्भरता)।

+24

0.5 के लिए संदर्भ (हालांकि लिंक जवाब नहीं हैं)। +0.5 शब्दकोष उद्धृत करने के लिए (हालांकि यह आगे के संदर्भ के बिना बहुत व्याख्यात्मक नहीं है)। प्रश्न का उत्तर नहीं देने के लिए -1। –

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