質問

C ++で非常に簡単なことをしたいのですが、方法がわかりません。 forループのような関数を作成したいのですが、理想的には、反復が発生するべき時間の変数を入力し、括弧内のいくつかの関数が実行されます。私は十分に明確だったと思います。ありがとう...

superFor (1)
{
  //commands to be executed here  
  add(1+2);
}
役に立ちましたか?

解決

C ++では、(現在のバージョンの)言語にはここで必要な機能が不足しているため、必要な機能がありません。つまり、機能ブロック<!>#8220; on the fly <!>#8221;を作成します。

できる最善の方法は、関数ポインタまたは関数オブジェクトを関数に渡すことです。 STLは、この多くの例を提供します。考慮:

void out(int x) {
    cout << x << ' ';
}

vector<int> xs;
xs.push_back(42);
xs.push_back(23);

for_each(xs.begin(), xs.end(), out);

これは、関数outへのポインターを関数 for_each に渡します。

他のヒント

#define superFor(n) for(int i = 0; i < (n); i++)

編集:ループでiという別の変数を使用しないように注意してください。

C ++では、通常のforループでそれを行います。

  for(variable; condition; increment) {
    //stuff goes here
  }

forループ内: 変数はiのようなカウント変数です。ここで変数を定義して初期化できます。あなたはしばしば<!> quot; int i = 0 <!> quot;

のようなものを見ます

条件はある種のテストです。あなたの場合、カウント変数がループを実行したい回数よりも少ないかどうかをチェックしたいです。 <!> quot; i <!> lt;のようなものを配置します。 how_many_times_to_loop <!> quot;

incrementは、カウント変数をインクリメントするコマンドです。あなたの場合、<!> quot; i ++ <!> quot;これは<!> quot; i = i + 1 <!> quot;

つまり、次のことがわかります。

  for(int i = 0; i < how_many_times_to_loop; i++) {
    //stuff goes here
  }

クレイジーですが、うまくいくかもしれません...

http://www.boost.org/doc /libs/1_36_0/doc/html/lambda.html

マクロを使用できます。

#define superFor(v,i) for(int v=0; v<(i); v++)

次のように使用します:

superFor(i,10) {
   printf("Doing something ten times");
}

多分BOOST_FOREACHはあなたが望むことをするでしょう:

http://engineering.meta-comm .com / resources / cs-win32_metacomm / doc / html / foreach.html

void DoSomethingRepeatedly(int numTimesTo Loop)
{
   for(int i=0; i<numTimesToLoop; i++)
   { 
       //do whatever; 
   }
}

それは?それはできません..簡単すぎます..あなたの質問を誤解しているに違いありません:( もちろん、numTimesToLoopの値が<!> gt; = 0であることを確認する必要があります。

編集:念のため、メソッドにしました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top