2008-10-17 52 views
0

我想在C++中做一些非常簡單的事情,但我找不到方法。 我想創建一個像for循環的函數,我將理想地輸入一個變量來進行迭代應該發生的時間,並且我的函數將在括號內執行一些函數。我希望我很清楚。謝謝...如何在C++中創建for循環像命令?

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

這是一個非常奇怪的要求,爲什麼不寫一對循環?我會說一個宏,但我想明白你爲什麼想要這麼做。 – 2008-10-17 14:46:01

+0

聞起來像功課...你能告訴我們你到目前爲止嘗試過什麼嗎? – freespace 2008-10-17 14:47:36

回答

6

你想要什麼是不可能在C++中,因爲語言(的當前版本)沒有在此處需要的一些功能:即「動態」創建功能塊

的。最好你可以做的就是將一個函數指針或函數對象傳遞給你的函數,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

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

是什麼呢?這不能太..簡單..我一定是誤解你的問題:( 當然,你必須檢查,numTimesToLoop的值是> = 0.

編輯:我做了一個方法, 。萬一

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

編輯:小心不要在循環中使用另一個名爲i的變量。

1

你可以使用宏。

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

,並使用它像這樣:

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

在C++中,你可以使用常規的for-loop。

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

在你的for循環中: 變量是一個像i這樣的計數變量。你可以在這裏定義變量並初始化它。你經常看到類似「int i = 0」的東西

條件是某種測試。在你的情況下,你想檢查你的計數變量是否少於你想循環執行的次數。你會把「我< how_many_times_to_loop」

增量是增加計數變量的命令。在你的情況,你想「我++」,這是說的手短方式「I = I + 1」

所以這給了我們:

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