在嵌套循环中每次迭代只做一次的最聪明的方法是什么?我无法提取不变部分,因为外循环非常复杂。这是我的 C++ 示例:
void foo::bar() {
if(oldCycle == tree.cycle) {
doSomething();
oldCycle++;
}
}
这个方法经常被调用,直到 tree.cycle 增加。oldCycle 是 foo 的私有成员变量
claas foo {
public: ...
private:
int oldCycle;
};
编译器会优化此代码还是每次迭代都会运行 if 检查?
编辑:这里像请求带有循环的代码:第一个循环在 mexFunction() 方法中,算法在 matlab 中启动并调用 mexFunction。
void mexFunction(...) {
for( tree.cycle = 0; tree.cycle<maxIt; tree.cycle++ ) {
foo->startfoo();
}
}
这是另一个循环:
void foo::startfoo() {
for(tree.cur_it = 0; tree.cur_it <=39; tree.cur_it++ ) {
bar();
}
}