对C++ STL,list元素的循环删除操作 //断链,出错地方

来源:互联网 发布:h3c dhcp mac地址绑定 编辑:程序博客网 时间:2024/05/18 21:47

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 = 0< 10i++
)
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 = 0< 10i++
)
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 }