इटरेटर जो आउटपुट इटरेटर्स की आवश्यकताओं को और संतुष्ट करते हैं उन्हें म्यूटेबल इटरेटर्स कहा जाता है। Nonmutable iterators को निरंतर iterators के रूप में जाना जाता है। [24.2.1: 4]क्या एक म्यूटेबल इनपुट इटेटरेटर बढ़ाना पुराने इटरेटर मूल्यों को अमान्य करता है?
यह सुझाव देता है कि आपके पास एक परिवर्तनीय इनपुट इटरेटर हो सकता है, जो इनपुट और आउटपुट इटरेटर दोनों की आवश्यकताओं को पूरा करता है।
इनपुट इटरेटर को बढ़ाने के बाद, इसके पुराने मूल्य की प्रतियों को अस्वीकार्य नहीं होना चाहिए [24.2.3]। हालांकि, मानक आउटपुट इटरेटर्स के लिए मानक ऐसा नहीं कहता है; वास्तव में, पोस्टफिक्स वृद्धि के लिए परिचालन अर्थशास्त्र { X tmp = r; ++r; return tmp; }
के रूप में दिए गए हैं, जो यह बताते हैं कि आउटपुट इटरेटर पुराने इटरेटर मूल्यों की प्रतियां (प्रतियां) को अमान्य नहीं कर सकते हैं।
तो, क्या एक परिवर्तनीय इनपुट इटरेटर को पुरानी पुनरावर्तक प्रतियों को अमान्य कर सकते हैं?
यदि हां, तो आप X a(r++); *a = t
या X::reference p(*r++); p = t
जैसे कोड का समर्थन कैसे करेंगे (उदा।) प्रॉक्सी ऑब्जेक्ट?
यदि नहीं, तो boost::iterator
का दावा क्यों है कि इसे प्रॉक्सी ऑब्जेक्ट की आवश्यकता है? (लिंक कोड है; struct
एस writable_postfix_increment_proxy
और postfix_increment_result
पर टिप्पणियों को पढ़ने के लिए नीचे स्क्रॉल करें)। यही है, अगर आप पुरानी इटरेटर मूल्य की एक (अस्वीकार्य) प्रतिलिपि वापस कर सकते हैं, तो आपको इस प्रति को प्रॉक्सी में क्यों लपेटना होगा?
ओह, मैं इन भाषा-वकील प्रश्नों से कैसे घृणा करता हूं। एक पिन के सिर पर कितने स्वर्गदूत नृत्य करते हैं, इस बारे में भी तर्क दे सकते हैं। –
@MarkRansom हाँ, मुझे यकीन है कि जब लोग उस भाषा को समझने की कोशिश करते हैं तो वे नफरत करते हैं। उन सभी को डर दो ... और मुझे इस * टिप्पणी * में उनके लिए मेरी नफरत के बारे में बताने की जरूरत है (रिकॉर्ड के लिए, इटरेटर श्रेणियां सी ++ में एक बड़ा सौदा है। समझना कि उनमें से प्रत्येक क्या कर सकता है) – jalf
@MarkRansom: मेरा प्रश्न मेरे लिए महत्वपूर्ण है क्योंकि एक सकारात्मक जवाब का मतलब है कि मुझे बूस्ट करता है जैसे म्यूटेबल इनपुट इटरेटर्स को संभालने के लिए मुझे अपनी कक्षा में एक और प्रॉक्सी ऑब्जेक्ट जोड़ना होगा। नीचे दी गई सहमति से पता चलता है कि एक परिवर्तनीय इनपुट इटरेटर (24.2.1: 4 में टिप्पणी के बावजूद) जैसी कोई चीज़ नहीं है। बदले में यह सुझाव देता है कि बूस्ट "म्यूटेबल इनपुट इटरेटर्स" के संचालन में गलत है --- यदि बूस्ट डेवलपर्स मानक के इस पहलू को गलत समझते हैं, तो क्या यह कोई मुद्दा नहीं है जिसे संबोधित किया जाना चाहिए? – nknight