列表迭代器的问题与STL不兼容

时间:2014-05-21 20:43:55

标签: c++ stl iterator

好的我,平均编程,我不是专业人士,但我知道足够让我四处游荡。我正在使用这段代码遇到问题,顺便说一句,我正在使用Microsoft Visual 2013.几乎它对我说的是它给了我一个非常糟糕的错误,说列表迭代器是不兼容的。所以基本上我不喜欢我将一个列表与另一个列表中的另一个列表进行比较。我的工作是提取两个“值”并将它们输入到不同的列表中,然后我将比较两者,但这可能是难以做到的事情。任何人都可以为我阐明一下吗?谢谢!

list<string>::iterator cur;
list<string>::iterator dis;

cur = current_list.begin();
dis = disregard_list.begin();
unsigned int x = 1;
while (x < current_list.size()  )
{

    if (cur == dis)
    {
        cur = current_list.erase(cur);
    }
    else
    {
        ++cur;
        ++x;
    }
}

1 个答案:

答案 0 :(得分:1)

Iterators curdis属于不同的列表

cur = current_list.begin();
dis = disregard_list.begin();

所以你可能不会比较它们

if (cur == dis)

也许你的意思是

if ( *cur == *dis)

似乎这个循环

unsigned int x = 1;
while (x < current_list.size()  )

无效。 x的初始值是否应该等于0?

考虑到课程std::list有方法remove 也许你的意思是

current_list.remove( disregard_list.front() );