इसमें तत्वों के साथ एक "खाली" कंटेनर/अनुक्रम बताने में सक्षम होने के लिए।
यदि कोई कंटेनर खाली है, तो इसके पहले तत्व के लिए एक सूचक अंत में एक अंत होगा, जो "अंत" स्थान जैसा ही होगा।
ए NULL
पॉइंटर का भी उपयोग किया जा सकता था, लेकिन चूंकि हेटरेटर आवश्यक रूप से पॉइंटर्स हैं, NULL
लागू नहीं होगा। इटरेटर के लिए डिफ़ॉल्ट मान भी इस्तेमाल किया जा सकता है। जेनेरिक प्रोग्रामिंग में, "डिफ़ॉल्ट" को सभी प्रकारों में समान रूप से कैसे निर्धारित किया जाएगा (यहां दिमाग पूर्व सी ++ 98 कार्यान्वयन को ध्यान में रखें)?
सभी अनुक्रम/कंटेनर स्मृति में संगत नहीं हैं, operator <
जैसे तुलना करने के लिए कोई भी प्रयास उपयुक्त नहीं होगा। समानता (या असमानता) का उपयोग, ऑपरेटरों ==
और !=
आवश्यक है, इसलिए अंतिम तत्व को इंगित करने के लिए एक बिंदु (या तत्व) की आवश्यकता है; "अंत से पहले एक" हल करता है।
समानता के लिए, "अंत" को अंत में एक के रूप में चुना जाता है; यह कई मुद्दों को हल करता है और एसटीएल को शक्ति लाता है। आधे बंद अंतराल सी ++ में आदर्श बन गया है।
एक तरफ ध्यान दें, श्रेणियों की लाइब्रेरी और तकनीकें इस मामले पर एक और प्रकाश डालती हैं, लेकिन यह तब नहीं था जब एसटीएल की नींव रखी गई थी।
एक और पक्ष नोट; सभी अनुक्रम एक कंटेनर से संबंधित नहीं हैं, कुछ अनुक्रमों को फिर से चालू करने की आवश्यकता होती है जो मूल कंटेनर या अनुक्रम का केवल एक हिस्सा हैं, आधा बंद अंतराल अनुक्रम तक पहुंचने के लिए एक समान तकनीक प्रदान करता है, स्वतंत्र रूप से जहां यह मूल कंटेनर में है/अनुक्रम।
Related।
समानता के कारण। इस तरह सभी पुनरावर्तक विभिन्न कंटेनरों के सभी प्रकारों में समान कार्य करते हैं। और कई कंटेनर सरणी और वेक्टर के रूप में यादृच्छिक पहुंच प्रदान नहीं करते हैं। यह 'i! = J' एकमात्र विकल्प और' i
DeiDei
क्योंकि सी ++ में आप आम तौर पर आधा बंद अंतराल के साथ श्रेणियां व्यक्त करते हैं, जिनमें कई सुविधाजनक गुण होते हैं; इस नोटेशन में, एक संपूर्ण कंटेनर को कवर करने वाली सीमा [प्रारंभ, अंत) है, अंत में अंत के बाद एक तत्व होने के साथ। –
यह भी जांचना आसान बनाता है कि एक श्रेणी अपर्याप्त है: 'जबकि (ptr! = End (डेटा)) ...' –