我有3个嵌套循环,其中代码无论如何都不会修改计数器,我需要最高级循环计数器的值才能在以后的代码中使用。看起来像这样
int i;
for( i = 0; !found && i <f_i.size();i++){
for(unsigned int j = 0; !found && j < f_g.size();j++){
for(unsigned int k = 0; !found && k < f_g.size();k++){
///Do Stuff
found = (/*Condition that's fulfilled after 2 iterations on k*/);
}
}
}
//Stuff that uses i
在最内部循环的2次迭代之后,该条件得以满足,因此
i
在该点的值为0。使用GDB时,我看到在最顶层的循环中检查了条件之后,i的值跳到了1,这在我的程序后面给了我一个错误,或者更糟糕的是超出范围的访问。
提前致谢
最佳答案
这就是for
循环的工作方式。在检查条件之前完成增量。
进行所需操作的正确方法(易于阅读,易于维护)是在循环外部添加变量。
int index;
并在找到元素时进行设置:
found = ...
if (found) index = i;
关于c++ - 执行后计数器for循环错误地递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61326194/