0

我一直在寻找与迭代器相同的问题;我发现了很多标题几乎相同的主题,以及类似的问题,但我的有点不同。

我试图在特定位置获取 *iterator,但在运行时出现错误:“list iterator not deferencable”,这是我的代码:

 CompetidorFormula2000* retornarCompetidorF2000(int pos){
        list<Competidor*>::iterator itr=miLista.begin();
        CompetidorFormula2000* f1=new CompetidorFormula2000(); 

        if(pos>0 && pos<=miLista.size()){
            advance(itr,pos);

        }
        f1=(CompetidorFormula2000*) (*itr);
        return f1;
        delete f1;
    }
4

1 回答 1

3

如果pos等于miLista.size(),那么您将获得一个指向列表末尾的迭代器,与您调用miLista.end(). 列表末尾的迭代器是不可取消引用的。

于 2012-06-12T17:58:31.840 回答