我想在C ++中做一些非常简单但我无法找到的东西。 我想创建一个像for循环这样的函数,理想情况下我会在迭代发生的时候输入一个变量,并且我的函数将在括号内执行一些函数。我希望我很清楚。感谢...
实施例
superFor (1)
{
//commands to be executed here
add(1+2);
}
答案 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)
这很疯狂,但它可能会起作用......
答案 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)
也许BOOST_FOREACH会做你想做的事:
http://engineering.meta-comm.com/resources/cs-win32_metacomm/doc/html/foreach.html