首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

容器vector解决办法

2013-10-21 
容器vectorfor(vectorint::iterator vit ivec.begin() vit ! ivec.end() ++vit){if( *vit % 2 0

容器vector
for(vector<int>::iterator vit = ivec.begin(); vit != ivec.end(); ++vit)
   {
       if( *vit % 2 == 0)
       {
           vit = ivec.erase(vit);
          --vit;
       }
   }

编译OK,运行错误提示
Expression: vector iterator not decrementable
用的是VS2010
把 --vit 注释掉可以运行 为什么??

[解决办法]
三楼正解, LZ出现运行时异常的原因可能是当vit指向ivec.begin()或者ivec中已经被删除的没有元素时发生的.
[解决办法]
楼上正确,iterator对下标越界很敏感,一旦有可能越界就会报错。如果是指针不会报错的,这样的话,唯一出了问题,没法找。楼主单步运行一下,很容易找到哪儿错了。

热点排行