我想在 C++ 中做一些非常简单的事情,但我找不到如何做。我想创建一个类似于 for 循环的函数,理想情况下,我将在其中输入一个变量来表示迭代应该发生的时间,并且括号内的一些函数将执行我的函数。我希望我足够清楚。谢谢...
例子
superFor (1)
{
//commands to be executed here
add(1+2);
}
#define superFor(n) for(int i = 0; i < (n); i++)
编辑:注意不要在循环中使用另一个名为 i 的变量。
你想要的在 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
。
在 C++ 中,您使用常规的 for 循环来做到这一点。
for(variable; condition; increment) {
//stuff goes here
}
在你的 for 循环中:变量是一个像 i 一样的计数变量。您可以在此处定义变量并对其进行初始化。你经常看到像“int i = 0”这样的东西
条件是某种测试。在您的情况下,您想检查您的计数变量是否小于您希望循环执行的次数。你会放一些像“i < how_many_times_to_loop”
increment 是增加计数变量的命令。在您的情况下,您想要“i++”,这是说“i = i + 1”的简写方式
所以这给了我们:
for(int i = 0; i < how_many_times_to_loop; i++) {
//stuff goes here
}
这很疯狂,但它可能只是工作......
你可以使用宏。
#define superFor(v,i) for(int v=0; v<(i); v++)
并像这样使用它:
superFor(i,10) {
printf("Doing something ten times");
}
void DoSomethingRepeatedly(int numTimesTo Loop)
{
for(int i=0; i<numTimesToLoop; i++)
{
//do whatever;
}
}
那呢?那不可能..太简单了..我一定误解了你的问题:(当然你必须检查 numTimesToLoop 的值是否> = 0。
编辑:我把它做成了一种方法,以防万一。
也许 BOOST_FOREACH 会做你想做的事:
http://engineering.meta-comm.com/resources/cs-win32_metacomm/doc/html/foreach.html