2008-10-17 35 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 
    }