Right, so that fixes it:
Code:
for (iter = myList.begin() ; iter != myList.end() ; ++iter)
{
std::cout << (*iter) << std::endl;
if ((*iter) == 5)
iter = myList.erase(iter);
}
Only problem is that since it returns the one AFTER, you get output like this:
Code:
$
0
1
2
3
4
5
7
8
9
0
1
2
3
4
6
7
8
9
So 6 is skipped. So to balance it out with that of the for loop, you have to do this:
Code:
for (iter = myList.begin() ; iter != myList.end() ; ++iter)
{
std::cout << (*iter) << std::endl;
if ((*iter) == 5)
{
iter = myList.erase(iter);
iter--;
}
}
To get desired results:
Code:
$
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
6
7
8
9
Arg. That's just annoying...
EDIT:
Or this:
Code:
for (iter = myList.begin() ; iter != myList.end() ; ++iter)
{
std::cout << (*iter) << std::endl;
if ((*iter) == 5)
iter = myList.erase(iter)--;
}
Bit less retarded I guess...but still pretty bad...