के लिए एक इटरेटर और वेक्टर पासिंग मैं कुछ समारोहएक समारोह
void print_elem(const std::vector<int>::iterator it, const std::vector<int> &vec) {/*.....*/}
है, तो मैं बाहर छोड़ कि वेक्टर मूल वस्तु के लिए एक संदर्भ है, मैं वेक्टर की प्रतियां मिलता है। इटेटरेटर के लिए एक ही धारण क्यों सही नहीं है? इटरेटर को संदर्भ क्यों नहीं होना चाहिए?
उदाहरण के लिए यदि मैं वेक्टर के माध्यम से पुनरावृत्ति करना चाहता था, तो प्रत्येक तत्व को मुद्रित करें और जब मैं वेक्टर के अंत को पास करता हूं तब तक रुकना चाहता था, जब तक कि वे वेक्टर के संदर्भ को पास न करें, पुनरावृत्ति केवल पहले वेक्टर प्रति के माध्यम से लगातार चालू हो जाती है। लेकिन अगर मैं एक संदर्भ से गुजरता हूं तो पुनरावृत्ति मूल वेक्टर ऑब्जेक्ट के माध्यम से जाती है। लेकिन इटरेटर को संदर्भ के बिना वेक्टर के तरीके की प्रतिलिपि क्यों नहीं मिलती है?
क्या यह पुनरावृत्ति है, तो एक पुनरावर्तक को संदर्भ तर्क के रूप में पास करने के लिए? किसी त्रुटि के फ़ंक्शन परिणामों के संदर्भ में एक इटरेटर को पास करना नोट करना महत्वपूर्ण है; लेकिन यह मामला नहीं है जब यह एक const_iterator है। क्या आपको पता है क्यों? क्या अंतर है जिसके बाद उत्तरार्द्ध त्रुटि नहीं है? -धन्यवाद। – jlstr