正确版本:
1 #include <iostream>
2 #include <list>
3 #include <algorithm>
4 using namespace std;
5
6 int main(int argc, char* argv[])
7 {
8 list<int> MyList;
9
10 for (int i = 0; i < 10; i++)
11 {
12 MyList.push_back(i);
13 }
14
15 list<int>::iterator Itor;
16
17 for ( Itor = MyList.begin(); Itor != MyList.end(); )
18 {
19 if ( *Itor == 4 )
20 {
21 Itor = MyList.erase(Itor);
22 }
23 else
24 {
25 Itor++;
26 }
27 }
28
29 copy(MyList.begin(), MyList.end(), ostream_iterator<int>(cout, " ") );
30 cout<<endl;
31
32 return 0;
33 }
错误版本:
1 #include <iostream>
2 #include <list>
3 #include <algorithm>
4 using namespace std;
5
6 int main(int argc, char* argv[])
7 {
8 list<int> MyList;
9
10 for (int i = 0; i < 10; i++)
11 {
12 MyList.push_back(i);
13 }
14
15 list<int>::iterator Itor;
16
17 for ( Itor = MyList.begin(); Itor != MyList.end(); Itor++)
18 {
19 if ( *Itor == 4 )
20 {
21 MyList.erase(Itor); //断链,出错地方
22 }
23 }
24
25 copy(MyList.begin(), MyList.end(), ostream_iterator<int>(cout, " ") );
26 cout<<endl;
27
28 return 0;
29 }