सम्मेलन कंटेनरों के लिए एक "नल इटरेटर" है, जो कोई परिणाम से संकेत मिलता है के लिए इस्तेमाल किया गया है, बराबर तुलना container.end()
के परिणामस्वरूप।
std::vector<X>::iterator iter = std::find(my_vec.begin(), my_vec.end(), x);
if (iter == my_vec.end()) {
//no result found; iter points to "nothing"
}
हालांकि, बाद से एक डिफ़ॉल्ट-निर्माण कंटेनर इटरेटर किसी विशेष कंटेनर से संबद्ध नहीं है, वहाँ कोई अच्छा मूल्य इसे ले सकता है। इसलिए यह केवल एक अनियमित चर है और इसके साथ करने का एकमात्र कानूनी संचालन एक वैध इटरेटर को असाइन करना है।
std::vector<X>::iterator iter; //no particular value
iter = some_vector.begin(); //iter is now usable
iterators के अन्य प्रकार के लिए यह सच नहीं हो सकता है। 0.gके मामले में, एक डिफ़ॉल्ट-निर्मित इटरेटर एक istream_iterator
का प्रतिनिधित्व करता है (बराबर तुलना करता है) जो इनपुट स्ट्रीम के ईओएफ तक पहुंच गया है।
'std :: list :: iterator iter;' __definition__ है। हालांकि सभी परिभाषाएं घोषणाएं हैं, एक घोषणा जो परिभाषा नहीं है: 'बाहरी std :: सूची :: iterator iter;'। –
sbi
विशेष रूप से, निर्माता _definition_ से संबंधित है, कोई अन्य घोषणा नहीं। इसका मतलब है कि आप केवल (एकल) परिभाषा में कन्स्ट्रक्टर को मान पास कर सकते हैं। इसके अलावा, अगर ctor एक टेम्पलेट है (यहां की तरह), यह तत्काल है जहां परिभाषा है। – MSalters