Bản sao có thể xảy ra:
Vector.erase(Iterator) causes bad memory access
iterate vector, remove certain items as I go.xóa trong khi lặp
Hi, tôi đã viết này nhưng tôi nhận được một số lỗi khi chạy nó
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... ;(
}
}
tôi có một vectơ vecto r của các điểm (2 ints) mà tôi gọi bài hát (1 rãnh là 1 vectơ điểm) Tôi muốn kiểm tra từng bản nhạc và nếu chúng chứa các điểm thì hãy xóa bản nhạc đầu tiên nếu không xóa bản nhạc đó. Điều này có đúng không?
Xin cảm ơn trước.
gì lỗi bạn đang nhận được? –
Loại câu hỏi này đã được hỏi nhiều lần. Kết quả đầu tiên của việc tìm kiếm "C++ erase iterator" là http://stackoverflow.com/questions/2943912/vector-eraseiterator-causes-bad-memory-access cũng trả lời câu hỏi này. – TheUndeadFish
@ nacho4d: Không liên quan trực tiếp, nhưng hãy xem Boost MultiArray cho cấu trúc hai chiều. Nó có phần dễ sử dụng hơn kiểu 'std :: vector>'. –
lunaryorn