मैंने अपने स्वयं के कंटेनर टेम्पलेट को एक इटरेटर के साथ लिखा है। मैं const_iterator कैसे कार्यान्वित करूं?सी ++: कॉन्स्ट_इटरेटर कैसे लिखें?
template <class T>
class my_container {
private:
...
public:
my_container() : ... { }
~my_container() { }
class iterator : public std::iterator<std::bidirectional_iterator_tag, T> {
public: ...
इटरेटर को तर्क के रूप में लेने या इटरेटर्स को वापस करने के तरीकों के बारे में क्या? मुझे const_iterators के लिए उन्हें अधिभारित करना होगा? दोहराया कोड का एक गुच्छा की तरह लगता है। –
इटरेटर्स को const_iterators में परिवर्तनीय होना चाहिए, इसलिए आपको केवल अधिभारित नहीं करना होगा यदि आपको केवल const_iterator की आवश्यकता है। आप प्रारंभ(), अंत() जैसे कार्यों के लिए करते हैं, लेकिन इसके आस-पास कोई रास्ता नहीं है, क्योंकि कॉन्स्ट भी विधि के हस्ताक्षर का हिस्सा है। –
@ पॉस्को ग्रब: नहीं। यदि आपके पास विधियां लेने वाले विधियां हैं तो टेम्पलेट का उनका। इस विधि को किसी भी चीज के लिए काम करना चाहिए जो एक इटरेटर की तरह कार्य करता है। यदि विधि को const_iterator की बजाय एक पुनरावर्तक की आवश्यकता होती है तो संकलक उचित त्रुटि उत्पन्न करेगा। –