小编Far*_*han的帖子

访问迭代器指向的列表元素

自然的答案是取消引用迭代器并获取值。但是,我坚持使用 VC++ 2010,它不允许取消引用列表迭代器(或者它允许取消引用?)我很困惑,因为有一次,我需要取消引用两个列表迭代器并使用以下方法比较它们的值:(* it) == (*it2) 程序因错误而崩溃,仅由于这一行。我还在语句中取消引用迭代器: printf("%d\n", (*it)); 不过,这工作得很好。那么,有没有办法在不取消引用或使用 cliext::list 的情况下访问元素。

for (it=sList.begin(); it != sList.end(); it++)
{
    for (it2=it; it2 != sList.end(); it2++)
    {
        it2++;
        if ((*it) == (*it2))
        {
           sList.erase(it, it2);
        }
        it2--;
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

调试断言失败

表达式:列表迭代器不可解引用

令人惊讶的是,在 DevC++ (MinGW) 上编译时,相同的代码运行没有问题

c++ stl list visual-c++

5
推荐指数
1
解决办法
4万
查看次数

标签 统计

c++ ×1

list ×1

stl ×1

visual-c++ ×1