列表迭代器不可取消引用

List Iterator not dereferencable

本文关键字:引用 可取消 不可取 迭代器 列表      更新时间:2023-10-16

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

我正在尝试在特定位置获取*迭代器,但出现错误:运行时"列出不可延迟的迭代器",这是我的代码:

 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;
    }

如果pos等于miLista.size()那么你会得到一个迭代器到列表的末尾,与调用miLista.end()时得到的迭代器相同。列表末尾的迭代器不可取消引用