Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1437836
  • 博文数量: 704
  • 博客积分: 10140
  • 博客等级: 上将
  • 技术积分: 6230
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-15 20:41
文章分类

全部博文(704)

文章存档

2013年(1)

2012年(16)

2011年(536)

2010年(151)

分类: C/C++

2011-01-24 17:53:02

1    
  2    #include
  3    #include
  4    #include
  5    #include
  6    
  7    using std::cout;
  8    using std::endl;
  9    using std::list;
 10    using std::iterator;
 11    using std::string;
 12    
 13    typedef   std::list <int>   List; 
 14    List   a; 
 15    List::iterator   it1; 
 16    int main()
 17    { 
 18        
 19        a.push_back(1); 
 20        a.push_back(2); 
 21        a.push_back(3); 
 22        a.push_back(4); 
 23        a.push_back(5); 
 24        
 25           for(it1  =  a.begin();   it1   !=   a.end(); ) 
 26        { 
 27             a.erase(it1); //返回指向下一个
 28             cout<<*it1<//验证it1为下移, 
 29             --it1;//此处去掉,报错
 30             ++it1;
 31        }
 32    }
 33    
 34    使用STLport5.1.4
 35    似乎h文件上面推荐用
 36    
 37    iterator erase(iterator __first, iterator __last) {
 38           while (__first != __last)
 39             erase(__first++);
 40           return __last;
 41     }
 42    
 43    


该程序正确并输出正常

 1    
  2             for(it1  =  a.begin();   it1   !=   a.end(); ) 
  3         { 
  4                    a.erase(it1++); //返回指向下一个
  5                  cout<<*it1<//验证it1为下移, 
  6                   
  7          }
  8    
  9    

这个也可以,

  1    for(it1  =  a.begin();   it1   !=   a.end(); ) 
  2    { 
  3         a.erase(it1); 
  4         cout<<*it1<  5         ++it1;
  6    }
  7    
  8    

报runtime错searchubb(''ubbcode5'',1,''tablebody2''); 

这个也可以:



  1     for(it1  =  a.begin();   it1   !=   a.end(); ) 
  2    { 
  3  
   it1=a.erase(it1); 
  4         cout<<*it1<  5         
  6    }
  7    
  



今天遇到这个问题,弄得我头发真的白了一根。
阅读(1084) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-09 13:25:53

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com