错误:矢量迭代器未取消引用

时间:2011-10-25 03:02:45

标签: c++ vector

我刚插入一个向量,一切都很好,当我去插入下一个时,向量迭代器当前指向vectorname.begin()。由于我只有一个值,我所拥有的后卫应该停止迭代,但由于某种原因它会中断。我觉得我没有正确地访问结束,或者停止迭代..不管怎样,这是破解的代码。

// check if iterator X and Y are equal to destX and destY
if(iter != this->playerVector.end())
{
    while((iter->myX != destX) && (iter->myY != destY) || (iter != this->playerVector.end()))
    {
        iter++;
    }
}

在一次迭代后检查while语句时会中断。

2 个答案:

答案 0 :(得分:2)

while循环中,您似乎缺少适当的条件,这就是为什么总是true (当你有各种各样的时候也会提出支持运营商到位)。你的病情应该是,

  

while((iter-> myX!= destX)&&(iter-> myY!= destY) && (iter!=   这 - > playerVector.end()))

以下是while循环的另一个简单版本:

while(iter != this->playerVector.end())
{
  if(iter->myX == destX || iter->myY == destY)
    break;
  iter++;
}

答案 1 :(得分:0)

如果您想要做的是“//检查迭代器X和Y是否等于destX和destY”那么您已经使它变得比需要的更复杂..

while(iter != this->playerVector.end())
{
  if(iter->myX == destX && iter->myY == destY) {
    cout << "found destX/Y at " << iter << endl;
    break;
  }
  iter++;
}

- 编辑 -

也知道当你写x || y ^ z && a & b...这样的looong语句时,你也必须考虑operator precedence,但在这种情况下我猜他们唯一的问题就是让它不可读。< / p>