Ah right, I can see I forgot to assign the return value from my erase statement to myIterator as CornedBee told me to so I have done that now.
I might be a bit thick though but I still cant see why and whats going on.
I tried this in my prog to help myself understand :
Code:
for(myIterator = games.begin(); myIterator != games.end(); /* removed this bit */ )
if (gameEntered == (*myIterator)) {
cout << "Myiterator before= " << (*myIterator) << endl;
games.erase(myIterator);
cout << "Myiterator after = " << (*myIterator) << endl;
cout << "Game removed.\n\n" << endl;
match = 'Y';
} else {
++myIterator;
}
Code:
for(myIterator = games.begin(); myIterator != games.end(); /* removed this bit */ )
if (gameEntered == (*myIterator)) {
cout << "Myiterator before = " << (*myIterator) << endl;
myIterator = games.erase(myIterator);
cout << "Myiterator after = " << (*myIterator) << endl;
cout << "Game removed.\n\n" << endl;
match = 'Y';
} else {
++myIterator;
}
and the results were the same. What am I not getting?