Angew made a comment का उल्लंघन करता है जो एक कच्चे सूचक का उपयोग करते हुए vector
है क्योंकि यह इटरेटर प्रकार ठीक था। उस तरह ने मुझे एक पाश के लिए फेंक दिया।कंटेनर इटरेटर के रूप में एक पॉइंटर का उपयोग मानक
मैं इसे शोध शुरू किया और पाया कि vector
iterators के लिए आवश्यकता केवल कि वे "Random Access Iterators" जिसके लिए यह स्पष्ट रूप से कहा गया है था कि संकेत अर्हता:
एक सरणी संतुष्ट सभी आवश्यकताओं को
का एक तत्व के लिए एक सूचक
एकमात्र कारण यह है कि कंपाइलर भी डीबगिंग उद्देश्यों के लिए vector
पर इटरेटर प्रदान करते हैं, या वास्तव में vector
पर मुझे याद की आवश्यकता है?
बाकी मानक पुस्तकालय के साथ स्थिरता की अधिक संभावना है। 'टेम्पलेट <वर्ग कंटेनर> शून्य डस्टफ (कॉन्स कंटेनर और सी) {के लिए (कंटेनर :: इटरेटर i = c.begin(); i! = c.end(); ++ i) {...}}' एक टेम्पलेट इस तरह से यह ध्यान नहीं देता कि आप किस प्रकार के कंटेनर का उपयोग करते हैं जब तक यह 'इटरेटर', 'स्टार्ट' और 'एंड' प्रदान करता है। – 0x5453
@ 0x5453 मुझे समझ में नहीं आता कि आप क्या कह रहे हैं? जाहिर है कंटेनर को इटरेटर वापस करना होगा। मैंने अभी नहीं सोचा था कि लौटने वाले कच्चे पॉइंटर्स उचित थे। क्या आप उस कथन को संबोधित कर रहे हैं, या कुछ और? –
मुश्किल हिस्सा 'std :: vector :: iterator' के एडीएल से जुड़े नामस्थान हैं। पॉइंटर्स के पास संबंधित नामस्थान के रूप में 'std' नहीं है। मानक को इटरेटर को संबंधित नामस्थान के रूप में 'std' होने की आवश्यकता नहीं है, हालांकि। –
MSalters