После помощи в этом вопросе я использую ссылку на мой класс 'Mover' для манипулирования объектом (как частью набора) в векторе. У меня, однако, есть проблемы, и я не могу точно определить причину этого. Похоже, что как только я достиг 30-35 объектов в моем векторе (добавленных через псевдослучайные интервалы), программа останавливается. Никаких сбоев, просто остановка, и я должен вручную завершить задачу (CTRL-C не работает).
Кажется, моя проблема заключается в этих кусочках кода. Мой оригинал:
int main() {
std::vector< Mover > allMovers;
std::vector< Mover >::iterator iter = allMovers.begin();
//This code runs to the end, but the 'do stuff' lines don't actually do anything.
Mover tempMover;
//Other code
while(iter < allMovers.end()) {
tempMover = *iter;
//Do stuff with tempMover
//Add another tempMover at a random interval
allMovers.push_back(CreateNewMover());
iter++;
}
//Other code
}
Мое обновление после предыдущего вопроса, указанного выше:
int main() {
std::vector< Mover > allMovers;
std::vector< Mover >::iterator iter = allMovers.begin();
//This code crashes once about 30 or so items exist in the vector, but the 'do stuff' lines do work.
//Other code
while(iter < allMovers.end()) {
Mover& tempMover = *iter;
//Do stuff with tempMover
//Add another tempMover at a random interval
allMovers.push_back(CreateNewMover()); //Crashes here.
iter++;
}
//Other code
}
Есть идеи, как это отследить? У меня есть std :: couts повсюду, чтобы пометить, где код для меня. Авария (в то время как происходит с различным количеством объектов) всегда приводит к сбою в push_back (), несмотря на то, что она успешно работала несколько раз за один и тот же прогон до аварии.
EDIT
Хотя я принимаю и (думаю) понимаю ответ re: iterators, я не понимаю, почему код DOES работает полностью, когда я не использую ссылку на объект? (Первый кодовый блок).
Другая редакция
В случае, если кто-то искал это специально, часть моего вопроса не была адресована: «Как отлаживать? Как новичок в C ++, я не знал об отладчике GDB (используя MinGW). Теперь, когда я узнал об этом, было очень полезно найти источник этих проблем.