在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()而导致的错误
在各种版本中均使用正常不报错
来源:oschina
链接:https://my.oschina.net/u/101842/blog/10461