उदाहरण के लिए, कहें कि मेरे पास एसटीएल std::vector
आंतरिक रूप से उपयोग करने से एक कस्टम कंटेनर है। अगर मैं std::vector<char*>::iterator
से my_container::iterator
टाइप करता हूं, तो पुनरावर्तक को अस्वीकार करने से char*
वापस आ जाएगा। हालांकि, मेरे कस्टम कंटेनर को अपने आंतरिक छिपाना चाहिए, जिसका अर्थ है कि मैं एक char
वापस करने के लिए एक dereferencing चाहते हैं।एक कस्टम इटरेटर में एक एसटीएल कंटेनर लपेटने के लिए सबसे अच्छा तरीका क्या है?
यह कैसे पूरा किया जा सकता है?
class my_container {
public:
typedef std::vector<char*> vector;
private:
vector vec_;
};
अद्यतन:char*
एक उदाहरण है। इसका मतलब सी स्ट्रिंग नहीं है; उदाहरण int
के साथ स्पष्ट होगा।
इसके अलावा, मैं std::forward_iterator_tag
और std::iterator
का उपयोग करना चाहूंगा क्योंकि यह एक अधिक मानक/वर्तमान दृष्टिकोण प्रतीत होता है।
आप अपनी खुद की इटरेटर, एक को लागू करने की आवश्यकता हो सकती है कि दो स्तरों ('चार *' वास्तविक इटरेटर की, और 'char' अपने भिन्नता ऑपरेटर के लिए) पर दोहराता। –
'char' कहां से आता है, क्या आप वेक्टर के भीतर प्रत्येक सबस्ट्रिंग पर दोहराए जाने या सिर्फ दो बार संदर्भित करने का मतलब है? – Barry