list iterator not incrementable

在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()而导致的错误

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

你可能感兴趣的:(list iterator not incrementable)