我刚插入一个向量,一切都很好,当我去插入下一个时,向量迭代器当前指向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语句时会中断。
答案 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>