list iterator not incrementable

喜你入骨 提交于 2019-12-05 19:50:41

在VC6中

list<T*> Tlist;

list<T*>::iterator  iter;

 

iter=Tlist.end(); 

iter++;

此时iter的游标位置和iter.begin()相等

但在VC6以后的版本中,比如VC2002,2005,2008中

list<T*> Tlist;

list<T*>::iterator  iter;

 

       iter=Tlist.end();

iter++;

此时iter的游标位置不是iter.begin(),而是一个空的位置

这时会报出 list iterator not incrementable 错误

解决办法如下:

list<T*> Tlist;

list<T*>::iterator  iter;

 

       iter=Tlist.end();

if(iter==Tlist.end())
    {
        iter=Tlist.begin();
    }
    else
    {
        iter++;
    }

这样做就躲避掉了VC6以后版本因为end()++不等于begin()而导致的错误

在各种版本中均使用正常不报错

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!