Frage

Ich will etwas tun, sehr einfach in C++, aber ich kann nicht herausfinden, wie.Ich möchte eine Funktion erstellen, wie eine for-Schleife, wo ich im Idealfall geben Sie eine variable ein, für die Zeiten der iteration passieren sollte und einige Funktionen in Klammern meine Funktion wird ausgeführt.Ich hoffe, ich war klar genug.Dank...

Beispiel

superFor (1)
{
  //commands to be executed here  
  add(1+2);
}
War es hilfreich?

Lösung

Was Sie wollen, ist nicht möglich, in C++, weil die (aktuelle version) Sprache fehlen einige features, die erforderlich sind hier:nämlich, die Schaffung Funktionsblöcke "on the fly".

Das beste, was Sie tun können, ist, übergeben Sie einen Funktionszeiger oder ein Funktionsobjekt, das Ihre Funktion.Die STL bietet viele Beispiele.Beachten:

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

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

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

Dieser übergibt einen Zeiger auf Funktion out um die Funktion for_each.

Andere Tipps

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

Edit: Seien Sie vorsichtig, um nicht eine weitere Variable i in der Schleife aufgerufen verwenden

.

in C ++ Sie das tun, mit einer regelmäßigen for-Schleife.

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

Ihre for-Schleife: Variable ist eine Zählvariable i dergleichen. Sie können hier die Variable definieren und initialisieren. Oft sieht man so etwas wie "int i = 0"

Bedingung ist eine Art Test. In Ihrem Fall sollten Sie, wenn Ihre Zählvariable weniger ist zu prüfen, als, wie oft Sie wollen, dass die Schleife auszuführen. Sie würden etwas setzen wie "i

Schritt ist ein Befehl, um die Zählvariable zu erhöhen. In Ihrem Fall, dass Sie "i ++", das eine kurze Hand Art zu sagen "i = i + 1"

Damit gibt uns:

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

Es ist verrückt, aber es könnte funktionieren ...

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

Sie können einen Makro verwenden.

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

und verwenden Sie es wie folgt aus:

superFor(i,10) {
   printf("Doing something ten times");
}
void DoSomethingRepeatedly(int numTimesTo Loop)
{
   for(int i=0; i<numTimesToLoop; i++)
   { 
       //do whatever; 
   }
}

Dass es? Das kann nicht sein .. zu einfach .. Ich muss Ihre Frage sein Mißverständnis :( Natürlich würden Sie überprüfen, dass der Wert von numTimesToLoop ist> = 0 ist.

Edit:. Ich machte es eine Methode, für alle Fälle

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top