可能重複:
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我稱之爲曲目(1曲目是1個矢量點)的點數(2整數) 我想檢查每個曲目,如果它們包含點,則刪除第一個曲目,否則刪除曲目。它是否正確?
在此先感謝。
你得到什麼錯誤? – 2010-10-10 17:39:42
這類問題已經被多次提出。搜索「C++擦除迭代器」的第一個結果是http://stackoverflow.com/questions/2943912/vector-eraseiterator-causes-bad-memory-access它也回答了這個問題。 – TheUndeadFish 2010-10-10 17:41:45
@ nacho4d:沒有直接關係,但請查看Boost MultiArray的二維結構。它比'std :: vector>'類型更容易使用。 –
lunaryorn
2010-10-10 17:44:11