another question about iterators के बाद मुझे कस्टम कंटेनर के बारे में कुछ संदेह हैं। मेरे कंटेनर में, iterator
const_iterator
का उप-वर्ग है, ताकि मुझे गैर-कॉन्स से "मुक्त" में रूपांतरण प्राप्त हो। लेकिन क्या इस तरह के सेटअप के लिए यह अनुमति है या कोई कमी या गैर-कार्य परिदृश्य हैं?क्या 'पुनरावर्तक' टाइप कर सकते हैं बस subclass 'const_iterator'?
उत्तर
हाँ, यह ठीक है। उदाहरण के लिए, vector
के लिए इटरेटर के वीसी 10 के कार्यान्वयन को संरचित किया गया है। <vector>
में _Vector_iterator
और _Vector_const_iterator
देखें।
वैसे, इटरेटर लिखना मुश्किल है। बूस्ट :: इटरेटर लाइब्रेरी सीखने और उपयोग करने के लिए आपका समय लायक है।
एक ऐसे मामले के बारे में सोचें जिसके लिए आपको इटरेटर के सदस्यों को संशोधित करने की आवश्यकता होगी।
और? मुझे लगता है कि आपको विस्तृत करने की जरूरत है। – doublep
सबक्लासिंग मेरे लिए अजीब लगती है, लेकिन प्रभावी रूप से एक मुद्दा है।
भले ही आप बूस्ट भागों पर निर्भर नहीं होना चाहते हैं, बूस्ट.इटरेटर लाइब्रेरी, और अधिक विशेष रूप से iterator_facade
और iterator_adaptor
बिट्स की जांच करें।
iterator
और const_iterator
को अपनी कक्षा के लिए बहुत अधिक डुप्लिकेट किए बिना लिखने का एक पूर्ण उदाहरण है।
template <class Value> class iterator_base;
typedef iterator_base<T> iterator;
typedef iterator_base<const T> const_iterator;
उपवर्गीकरण साथ मुद्दा है कि आप तो एक आभासी नाशक प्रदान करना चाहिए और आप कर रहे हैं: उनके विचार एक टेम्पलेट iterator_base
वर्ग है जिसे आप की पंक्ति में स्थिरांक और गैर स्थिरांक प्रकार के लिए उपयोग कर सकते हैं लिखने के लिए है स्लाइसिंग के संपर्क में (const_iterator
को iterator
से बनाते समय)
तो, यहां दूसरों के विपरीत, मुझे यह "ठीक" नहीं मिला।
"आपको फिर आभासी विनाशक प्रदान करना चाहिए" - लेकिन मेरे विनाशक वैसे भी कुछ नहीं करते हैं। यहां तक कि अगर उन्होंने किया, तो 'इटरेटर' प्रकार शायद कुछ भी किए बिना, 'const_iterator' विनाशक का उत्तराधिकारी होगा। "आप टुकड़े करने के लिए उजागर हो गए हैं" - क्या आप कृपया विस्तार से बता सकते हैं, मुझे समझ में नहीं आता कि आपका क्या मतलब है। – doublep
स्लाइसिंग का एक उदाहरण, 'इसे पुनरावर्तक; const_iterator cit = static_cast
- 1. क्या आप IronPython में .NET ऑब्जेक्ट टाइप कर सकते हैं?
- 2. क्या कर सकते हैं कि sed क्या कर सकते हैं?
- 3. कैसे मैं बस "रन" कर सकते हैं तुतलाना फ़ाइलों
- 4. हास्केल: पढ़ सकते हैं और टाइप हस्ताक्षर
- 5. एंटिटी फ्रेमवर्क सीएफ स्टोर 'ऑब्जेक्ट टाइप' वैल्यू कर सकते हैं?
- 6. इटरेटर और const_iterator अक्षम के बीच तुलना कर रहे हैं?
- 7. टेक्स्टफ़िल्ल्ड: चाहिएChangeCharactersInRange: replacementString: subclass
- 8. क्या UITAPGestureRecognizer को UILabel subclass
- 9. क्या पाइथन एक कमजोर टाइप की गई भाषा है क्योंकि वेरिएबल प्रकार स्विच कर सकते हैं?
- 10. क्या आप सीमित कर सकते हैं कि MATLAB GUI संपादन बॉक्स में कौन से वर्ण टाइप किए जा सकते हैं?
- 11. मैं datetime.date subclass क्यों नहीं कर सकता?
- 12. क्यों एक subclass में super.getClass() subclass नाम
- 13. const_iterator की स्थिरता को कैसे हटाया जाए?
- 14. क्या java.util.regex.Pattern आंशिक मिलान कर सकते हैं?
- 15. नियम इंजन क्या कर सकते हैं?
- 16. क्या हम sandcastle तेज कर सकते हैं?
- 17. क्या आप subclass के भीतर super.finalize() को कॉल करते हैं?
- 18. INotifyProperty subclass
- 19. हम subclass में एक templated घोंसला वर्ग टाइप या परिभाषित कैसे करते हैं?
- 20. पुनरावर्तक
- 21. एक पुनरावर्तक
- 22. सी में आप क्या नहीं कर सकते हैं जिसे आप उद्देश्य-सी में कर सकते हैं?
- 23. क्या वाईफाई सिस्टम से पूछताछ कर सकते हैं और नेटवर्क नाम वापस कर सकते हैं?
- 24. सी ++ iterator to const_iterator
- 25. मैं कैसे एक नियम के मैच के लिए mod_rewrite प्राप्त कर सकते हैं बस एक बार
- 26. पुनरावर्तक से पुनरावर्तक या स्पष्ट रूपांतरण को पुनरावर्तक
- 27. पायथन - एक subclass
- 28. बस PostgreSQL तालिका नाम ("संबंध मौजूद नहीं है") का उपयोग नहीं कर सकते हैं
- 29. क्या आप नकली * निक्स अपटाइम कर सकते हैं?
- 30. "UIViewController subclass" xcode 4.3
मुझे पता है, लेकिन मेरे मामले में यह एक छोटी पुस्तकालय है और मैं नहीं चाहता कि यह बूस्ट भागों सहित किसी भी चीज़ पर निर्भर करे। – doublep
यह पहले से ही अच्छा है कि एसटीएल के कुछ कार्यान्वयन इस तरह काम करते हैं। क्या आपको मानक में एक खंड पता है जो सामान्य रूप से इटरेटर और आवश्यकताओं का वर्णन करता है? – doublep
एफसीडी (एन 3035.pdf) का 24.2 इटरेटर और उनकी आवश्यकताओं का वर्णन करता है –