如何组合if()以便只调用一次函数以避免分支未命中?

时间:2012-11-07 16:19:05

标签: c++ loops if-statement

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

  if (condition)
            initialize arg2;

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

 }

如何将if()f()仅召唤一次?

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

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

 if (condition)
       initialize arg2;

 for loop
 {
     f(arg1, condition?arg2[loop_index]:0);
 }

答案 1 :(得分:1)

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

if (condition) {
  initialize arg2;

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

答案 2 :(得分: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
}