0

これは C++ コーディングの問題です。

  if (condition)
            initialize arg2;

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

 }

if()を 1 回だけ呼び出すにはどうすればよいf()ですか?

arg2 は大量のメモリを消費する可能性があります。条件が false の場合、初期化する必要はありません。

どんな助けでも大歓迎です。

4

3 に答える 3

2
 if (condition)
       initialize arg2;

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

ループからブランチを簡単に取り出して、代わりに外側のブランチに 2 つのループを作成できます。

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 に答える