ok im reading a c++ book called beginning c++ game programming and doing one of the exercises in it which is:
write a program using vectors and iterators that allows a user to maintain a list of his or her favorite games. The program should allow the user to list all game titles, add a game title, and remove a game title.
I finished the code and upon running everything seems to work except one thing. When i try to remove the last game in the list it freezes and has to be ended. Ive tested everything else and that seems to be the only problem and I have no idea why, so if someone could help me I would be very grateful. Don't know if it matters, but im using Dev-C++.
Code:#include <vector> #include <iostream> #include <string> using namespace std; int main() { vector<string> favGames; vector<string> choices; choices.push_back("add"); choices.push_back("remove"); choices.push_back("end"); vector<string>::const_iterator iter; string gameTitle; string choice; bool cont = true; cout << "Use this program to make and modify a list of your favorite games.\n"; while(cont==true) { if(favGames.empty()) cout << "\nYour list is currently empty.\n"; else // displays list { cout << "\nFavorite Game list:\n"; for(iter = favGames.begin(); iter != favGames.end(); ++iter) cout << *iter << endl; } do { cout << "\nadd remove or end? "; cin >> choice; if(choice == choices[0]) { cout << "Whats the name of the game to add?\n"; cin >> gameTitle; favGames.push_back(gameTitle); break; } else if(choice == choices[1]) { if(favGames.empty()) { cout << "Your list is already empty.\n"; break; } cout << "Whats the name of the game to remove?\n"; cin >> gameTitle; int pos = 0; int oldSize = favGames.size(); for(iter = favGames.begin(); iter != favGames.end(); ++iter) { if(gameTitle == *iter) favGames.erase(favGames.begin()+ pos); ++pos; } if(oldSize == favGames.size()) cout << "No such game in the list.\n"; break; } else if(choice == choices[2]) { cout << "Goodbye.\n"; cont = false; break; } else { cout << "Please choose valid choice"; } }while(true); } system("PAUSE"); return 0; }