0

这是一个 c++ 编码问题。

  if (condition)
            initialize arg2;

 for loop
 {
      if (condition)
            f(arg1, arg2[loop_index]);
      else  
            f(arg1, 0); 

 }

如何结合只if()调用f()一次?

arg2 可能会消耗大量内存,如果条件为假,我们不需要对其进行初始化。

任何帮助将不胜感激。

4

3 回答 3

2
 if (condition)
       initialize arg2;

 for loop
 {
     f(arg1, condition?arg2[loop_index]:0);
 }
于 2012-11-07T16:21:37.427 回答
1

您可以轻松地将分支从循环中取出,并在外部分支中有两个循环:

if (condition) {
  initialize arg2;

  for loop {
    f(arg1, arg2[loop_index]);
  }
} else {
  for loop {
    f(arg1, 0);
  }
}
于 2012-11-07T16:24:09.800 回答
0

最简单的是,如果执行 1 次,则将变量表示从 0 到 1 的标志。将标志设为全局变量。

int flag=0;
main(){//code}

  if (condition&&flag==0)
        f(arg1, arg2[loop_index]);
  else  
        f(arg1, 0); 

在 f() 内

f(){
flag=1;
//rest code
}
于 2012-11-14T13:39:14.937 回答