यह संभवतः जोड़ने योग्य है कि किसी भी प्रकार ( std::back_insert_iterator
,, ) का एक सम्मिलित इट्रेटर तब तक वैध बने रहने की गारंटी है std::front_insert_iterator
, std::insert_iterator
जब तक कि सभी पुनरावृत्तियां इस पुनरावृत्ति के माध्यम से नहीं की जाती हैं और कोई अन्य स्वतंत्र इटेरेटर-अमान्य घटना नहीं होती है।
उदाहरण के लिए, जब आप std::vector
उपयोग करके सम्मिलन संचालन की एक श्रृंखला का प्रदर्शन कर रहे हैंstd::insert_iterator
यह संभव है कि ये सम्मिलन वेक्टर पुनः प्राप्ति को ट्रिगर करेंगे, जो सभी पुनरावृत्तियों को उस वेक्टर में "बिंदु" को अमान्य कर देगा। हालांकि, विचाराधीन इंसर्ट डालने वाले को वैध बने रहने की गारंटी दी जाती है, अर्थात आप सुरक्षित रूप से आवेषण का क्रम जारी रख सकते हैं। सदिश reallocation को ट्रिगर करने के बारे में चिंता करने की कोई आवश्यकता नहीं है।
यह, फिर से, केवल सम्मिलित पुनरावृत्ति के माध्यम से किए गए सम्मिलन पर लागू होता है। यदि कंटेनर पर कुछ स्वतंत्र कार्रवाई द्वारा इटेरेटर-अमान्य घटना को ट्रिगर किया जाता है, तो इंसर्ट डालने वाला सामान्य नियमों के अनुसार अमान्य हो जाता है।
उदाहरण के लिए, यह कोड
std::vector<int> v(10);
std::vector<int>::iterator it = v.begin() + 5;
std::insert_iterator<std::vector<int> > it_ins(v, it);
for (unsigned n = 20; n > 0; --n)
*it_ins++ = rand();
वेक्टर में सम्मिलन के एक वैध अनुक्रम को करने के लिए गारंटी दी जाती है, भले ही वेक्टर इस प्रक्रिया के बीच में कहीं पर फिर से स्थापित करने का "निर्णय" करता है। Iterator it
स्पष्ट रूप से अमान्य हो जाएगा, लेकिन it_ins
वैध बना रहेगा।