संभावित डुप्लिकेट पुनरावृत्ति करते हुए:
Vector.erase(Iterator) causes bad memory access
iterate vector, remove certain items as I go.हटाने
हाय, मैं यह लिखा है, लेकिन मैं कुछ त्रुटियाँ प्राप्त कर रहा हूँ, जब उसने चलना
for (vector< vector<Point> >::iterator track = tracks_.begin(); track != tracks_.end(); track++) {
if (track->empty()) { // if track is empty, remove it
tracks_.erase(track);
track++; // is this ok?
}else { //if there are points, deque
track->erase(track->begin()); //my program crashes here after a while... ;(
}
}
मैं vecto का एक वेक्टर है अंक (2 इंट्स) जिनके मैं ट्रैक ट्रैक करता हूं (1 ट्रैक अंक का 1 वेक्टर है) मैं प्रत्येक ट्रैक को देखना चाहता हूं और यदि उनमें अंक हैं तो पहले को हटाएं अन्यथा ट्रैक हटा दें। क्या ये सही है?
अग्रिम धन्यवाद।
क्या त्रुटियों मिल रहा है? –
इस तरह का सवाल पहले से ही कई बार पूछे जा चुके हैं। "सी ++ मिट इटेटरेटर" की खोज करने का पहला परिणाम http://stackoverflow.com/questions/2943912/vector-eraseiterator-causes-bad-memory-access है जो इस प्रश्न का उत्तर भी देता है। – TheUndeadFish
@ nacho4d: सीधे संबंधित नहीं है, लेकिन दो-आयामी संरचनाओं के लिए बूस्ट मल्टीएरे पर एक नज़र डालें। 'Std :: vector>' प्रकार से अधिक उपयोग करना कुछ आसान है। –
lunaryorn