अनुभाग §24.1/5 सी ++ स्टैंडर्ड से (2003) में लिखा है,एसटीएल इटरेटर्स के संदर्भ में एकवचन और गैर-एकवचन मूल्य क्या है?
बस के रूप में एक सरणी अंतिम तत्व सरणी के अतीत ओर इशारा करते हुए एक सूचक मूल्य नहीं होता है गारंटी देता है कि करने के लिए एक नियमित रूप से सूचक, इसलिए किसी भी इटरेटर प्रकार के लिए एक इटरेटर मान है जो संबंधित कंटेनर के अंतिम तत्व से पहले इंगित करता है। ये मान को पिछले-अंत-अंत मान कहा जाता है। एक इटरेटर के मान I जिसके लिए अभिव्यक्ति * मुझे परिभाषित किया गया है अस्वीकार्य कहा जाता है। पुस्तकालय कभी भी मानता है कि पिछले-अंत-अंत मान भरोसेमंद हैं। Iterators भी में एकवचन मान हो सकते हैं जो किसी भी कंटेनर से जुड़े नहीं हैं। [उदाहरण:। के अप्रारंभीकृत सूचक एक्स घोषणा के बाद (साथ पूर्णांक * एक्स के रूप में;), एक्स हमेशा एक सूचक की एक विलक्षण मान होना मान लिया जाना चाहिए] सबसे अभिव्यक्ति की परिणाम के लिए अपरिभाषित हैं एकवचन मूल्य; केवल अपवाद एक असाइनर के लिए गैर-एकवचन मान का असाइनमेंट है जो एकवचन मान रखता है। इस मामले में एकवचन मान को किसी भी अन्य मूल्य के रूप में ओवरराइट किया गया है। भरोसेमंद मान हमेशा नॉनसिंगुलर होते हैं।
मैं वास्तव में पाठ बोल्ड में दिखाया गया है समझ में नहीं आ सकता है?
- एकवचन मूल्य और गैर-मूल्यवान मूल्य क्या है? वे कैसे परिभाषित किए जाते हैं? और कहाँ?
- कैसे और क्यों अपरिवर्तनीय मान हमेशा नॉनसिंगुलर हैं?
क्या डिफॉल्ट-निर्मित 'istream_iterator' को एकवचन माना जा सकता है? –
मुझे ऐसा नहीं लगता है। यह एक वैध अतीत-अंत-अंतराल वाला है। यदि यह एकवचन था, तो आप इसे स्ट्रीम के एनएफएफ को परिभाषित करने के लिए उपयोग नहीं कर सके, क्योंकि आप इसे किसी अन्य इटरेटर से तुलना नहीं कर सके। – templatetypedef