如何在C ++中创建类似for循环的for循环?

时间:2008-10-17 14:44:20

标签: c++ function

我想在C ++中做一些非常简单但我无法找到的东西。 我想创建一个像for循环这样的函数,理想情况下我会在迭代发生的时候输入一个变量,并且我的函数将在括号内执行一些函数。我希望我很清楚。感谢...

实施例

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

7 个答案:

答案 0 :(得分:9)

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

编辑:注意不要在循环中使用另一个名为i的变量。

答案 1 :(得分: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

答案 2 :(得分:3)

在C ++中,你可以使用常规的for循环。

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

在你的for循环中: 变量是像i一样的计数变量。您可以在此处定义变量并对其进行初始化。你经常会看到像“int i = 0”

这样的东西

条件是某种考验。在您的情况下,您要检查计数变量是否小于您希望循环执行的次数。你会说“i&lt; how_many_times_to_loop”

increment是一个递增计数变量的命令。在你的情况下,你想要“i ++”这是一个简单的说法“i = i + 1”

这样就给了我们:

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

答案 3 :(得分:2)

这很疯狂,但它可能会起作用......

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

答案 4 :(得分:1)

您可以使用宏。

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

并像这样使用它:

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

答案 5 :(得分:0)

void DoSomethingRepeatedly(int numTimesTo Loop)
{
   for(int i=0; i<numTimesToLoop; i++)
   { 
       //do whatever; 
   }
}
那是吗?这不可能......太简单了......我一定是在误解你的问题:( 当然你必须检查numTimesToLoop的值是&gt; = 0.

编辑:我做了一个方法,以防万一。

答案 6 :(得分:0)