list iterator not incrementable

在VC6中spa

list<T*> Tlist;rem

list<T*>::iterator  iter;it

 

iter=Tlist.end(); table

tab

iter++;di

此時iter的遊標位置和iter.begin()相等錯誤

但在VC6之後的版本中,好比VC2002,2005,2008中版本

list<T*> Tlist;iterator

list<T*>::iterator  iter;ab

 

       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()而致使的錯誤

在各類版本中均使用正常不報錯

相關文章
相關標籤/搜索