Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误:向量迭代器未取消引用_C++_Vector - Fatal编程技术网

C++ 错误:向量迭代器未取消引用

C++ 错误:向量迭代器未取消引用,c++,vector,C++,Vector,我刚刚插入了一个向量,一切都很好,当我进入下一步插入时,向量迭代器当前指向vectorname.begin()。因为我只有一个值,所以我的防护应该阻止它迭代,但它会因为某种原因而中断。我觉得我没有正确地到达终点,或者没有停止迭代。。不管是哪种方式,这里的代码正在破坏 // check if iterator X and Y are equal to destX and destY if(iter != this->playerVector.end()) { while((iter-

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

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++;
}
如果您想做的是“//检查迭代器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++;
}
while(iter!=this->playerVector.end())
{
如果(iter->myX==destX&&iter->myY==destY){

CUT添加C++语言标签;如果不正确,请告诉我们插入代码,以及它周围的任何东西。你能发布更多的代码吗?你说你做了一些插入;在哪里?你可能有一些无效的迭代器。它是怎么破解的?什么是<代码> -> PraveValue<代码>,<代码> DestX和<代码>destY
contain?你能发布一个完整的自包含代码示例,我可以将其粘贴到一个文件中,编译、运行并查看错误吗?我不太清楚while循环的条件
(iter->myX!=destX)&(iter->myY!=destY)|(iter!=this->playerVector.end())
。你能用文字描述一下吗?我想
iter->myX==destX&&iter->myY==destY
应该有
|
。从代码上看,OP似乎想在找到
myX
myY
中的任何一个时打破循环。…..我看到并想给你相反的评论..IMO“X和Y等于destX和destY”翻译成
iter->myX==destX&&iter->myY==destY
,这似乎也是合乎逻辑的。让我们等待OP的评论。实际上
(iter->myX!=destX&&iter->myY!=destY)
相当于
!(iter->myX==destX||iter->myY==destY)
。所以我只是按照这个逻辑进行评论。我不确定OP是否想找到其中一个或两个。我的感觉只是从给出的代码中得出的。:)我确实必须将| |改为&&并且似乎效果很好。这些错误有时似乎会从我身边溜走。谢谢你的帮助。