मेरे पास एक नक्शा है जो वैश्विक स्मृति में परिभाषित किया गया है। मैं इसके ऊपर पुनरावृत्ति कर रहा हूं, मान लीजिए कि मैं तीसरे तत्व में हूं। अब मैं एक और फ़ंक्शन कॉल कर रहा हूं जो एक ही मानचित्र पर अपना खुद का इटरेटर उत्पन्न करता है, हालांकि यह मानचित्र में 4 वें या 5 वें तत्वों को मिटा सकता है। मेरा सवाल यह है कि, जब मैं उस फ़ंक्शन से वापस आ जाता हूं और मानचित्र पर फिर से जारी रहता हूं (मैं आपको याद दिलाता हूं कि मैं तीसरे तत्व में हूं), क्या मेरा इटरेटर अमान्य हो सकता है या यह सुरक्षित है?एक मानचित्र पर फिर से शुरू करें और अन्य तत्वों को हटाए गए फ़ंक्शन को कॉल करना मानचित्र
क्षमा करें मैं कोड बहुत संलग्न नहीं कर सकता हूं।
धन्यवाद
संपादित करें: मेरे सवाल कुछ इस तरह है: इस मामले में मैं एक ही तत्व मिटा में
map<string,string> mapi;
void er() {
mapi.erase("t");
}
int main() {
mapi.insert(pair<string,string>("w","a"));
mapi.insert(pair<string,string>("e","a"));
mapi.insert(pair<string,string>("r","a"));
mapi.insert(pair<string,string>("t","a"));
mapi.insert(pair<string,string>("A","a"));
mapi.insert(pair<string,string>("u","a"));
mapi.insert(pair<string,string>("C","a"));
map<string,string>::iterator it;
for (it=mapi.begin(); it!=mapi.end(); it++) {
cout << it->first << endl;
if (it->first=="t")
er();
}
}
- valgrind इसकी एक त्रुटि कहते हैं। हालांकि जब मैं अन्य तत्वों को हटा देता हूं तो यह ठीक काम करता प्रतीत होता है।
एक साधारण उपयोग-केस बनाएं और इसका परीक्षण करें। – Xeo
@Xeo: यह * गारंटी * नहीं होगा कि यह सुरक्षित और परिभाषित है। –
मैंने कुछ बहुत आसान बनाया। ऐसा लगता है कि मैं सिर्फ दूसरों की राय चाहता हूं कि यह सुनिश्चित हो सके कि –