2010-12-11 20 views
11

एक एल्गोरिदम में मैं वर्तमान में कार्यान्वित कर रहा हूं, मुझे संरचना की एक std :: सूची में हेरफेर करने की आवश्यकता है टी टी टी के दूसरे उदाहरण का संदर्भ रखता है, लेकिन इस संदर्भ को "असाइन नहीं किया जा सकता"। सबसे पहले, मैं इस संदर्भ को पकड़ने के लिए एक सूचक का उपयोग करना चाहता था, लेकिन इसके बजाय एक इटरेटर का उपयोग करना सूची से निकालना आसान बनाता है।इटरेटर शून्य सूचक के बराबर है?

मेरा प्रश्न है: मेरे इटरेटर के साथ शून्य सूचक के बराबर का प्रतिनिधित्व कैसे करें?

मैं सामान्य समाधान पढ़ myList.end() का उपयोग करने के लिए है, लेकिन मेरे मामले में, मैं परीक्षण करने के लिए है कि क्या इटरेटर "अशक्त" है या नहीं की जरूरत है, और मैं इस पल जब बीच सूची में जोड़ने या तत्वों को निकाल सकते हैं मैं इटरेटर को स्टोर करता हूं और जिस क्षण मैं इसे सूची से हटा देता हूं ... क्या मुझे इटेटरेटर बिंदु को "शून्य" तत्व वाली एक ज्ञात सूची में बनाना चाहिए? या क्या एक और सुरुचिपूर्ण समाधान है?

उत्तर

15

this (मेरे द्वारा जोर) के अनुसार:

अन्य आधार अनुक्रम कंटेनर (वेक्टर और Deque) की तुलना में, सूचीबद्ध करता सबसे कारगर कुछ स्थिति के अलावा अन्य पर सम्मिलन कर कंटेनर हैं अनुक्रम की शुरुआत या अंत, और इनके विपरीत, सभी पहले प्राप्त किए गए इटरेटर और संदर्भ सम्मिलन के बाद मान्य रहते हैं और उसीको संदर्भित करते हैंतत्व वे पहले संदर्भ दे रहे थे।

यह उसी पर लागू होता है (इटेटर पर स्पष्ट अपवाद के साथ एक हटाए गए तत्व को अमान्य कर दिया जाता है)। तो हाँ, end() प्राप्त करना हमेशा एक ही "अमान्य" तत्व को इंगित करेगा और उपयोग करने के लिए सुरक्षित होना चाहिए।

+0

ठीक है, बढ़िया! मुझे एहसास हुआ कि अंत() नियम "अपवाद" होगा, और यह अगले तत्व का प्रतिनिधित्व करेगा जो आप अपनी सूची में push_back करेंगे ... – Mikarnage

+0

नहीं, एसटीएल उससे बेहतर है। :) – suszterpatt

+0

मैं उत्सुक हूं: क्या किसी को पता है कि वह 'मानक' में भी है या नहीं? – sje397

संबंधित मुद्दे