【发布时间】:2012-05-14 16:17:19
【问题描述】:
关于 C++ 代码的简单问题:
for(int i=0;i<npts;i++)
{
for(int j=i;j<2*ndim;j++)
{
if(funcEvals[i]<bestListEval[j])
{
bestListEval[j] = funcEvals[i];
for(int k=0;k<m_ndim;k++)
bestList[j][k] = simplex[i][k];
break;
}
}
}
我想确保
-
double **simplex的每一行在double **bestList中最多插入一次 -
break的实例在这里脱离了第二个(内部)for循环。
是这样吗?
【问题讨论】:
-
是的,它正在脱离第二个
for循环。 -
break总是跳出在代码中处于活动状态的最内层结构(循环或switch)(在本例中为for (j ...循环)。 -
Break 总是会中断最里面的循环。如果您想突破更多,您需要有一个布尔值或其他东西来跟踪何时继续。
-
如果
funcEvals[i]<bestListEval[j]是true,则break语句将始终发生。你真的应该使用一些更好的变量名。 -
添加了“C”标签,因为问题与 C 相关并且代码是用 C 编写的。