Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于变量的for循环方向_C++ - Fatal编程技术网

C++ 基于变量的for循环方向

C++ 基于变量的for循环方向,c++,C++,我有两个更大的for循环,我想将它们分成函数以减少代码重复 它们之间唯一的区别是循环的第一行 一是: for (int j = 50; j < average_diff; j++) { 我有一个整数tb,它指示我要使用哪一个(它的值分别为1或2) 我想知道我怎样才能最好地完成这个任务。这是一个很好的宏用例吗?不,听起来根本不是一个很好的宏用例 最好的(大多数C++-ish)方法可能是使用,并将其传递给函数。不,对于宏来说,这听起来根本不是一个好的例子 最好的(大多数C++-ish)方法可

我有两个更大的for循环,我想将它们分成函数以减少代码重复

它们之间唯一的区别是循环的第一行

一是:

for (int j = 50; j < average_diff; j++) {
我有一个整数tb,它指示我要使用哪一个(它的值分别为1或2)


我想知道我怎样才能最好地完成这个任务。这是一个很好的宏用例吗?

不,听起来根本不是一个很好的宏用例


最好的(大多数C++-ish)方法可能是使用,并将其传递给函数。

不,对于宏来说,这听起来根本不是一个好的例子


最好的(大多数C++-ish)方法可能是使用,并将其传递给函数。

不要为包装
,只需将内容包装到函数中:

for (int j = 50; j < average_diff; j++) {
   process(j);
}

for (int j = upper_limit; j > lower_limit; j--) {
   process(j);
}
for(int j=50;j下限;j--){
过程(j);
}

不要为
包装
,只需将内容包装在函数中:

for (int j = 50; j < average_diff; j++) {
   process(j);
}

for (int j = upper_limit; j > lower_limit; j--) {
   process(j);
}
for(int j=50;j下限;j--){
过程(j);
}

如果变量如您所说,一个方向为
1
,另一个方向为
2
,则可以使用:


如果使用最后一个,那么我建议您将代码放在您调用的单独函数中的循环中,这样您就不会有任何重复的代码。

如果您的变量如您所说,一个方向为
1
,另一个方向为
2
,您可以使用:


如果使用最后一个,那么我建议您将代码放在您调用的单独函数的循环中,这样您就不会有任何重复的代码。

If(cond){for(first;loop;etc){function();}}}else{for(second;loop;etc){function();}
您可能希望将循环体提取到函数中。或者,如果可能,将第二个循环更改为
for(int j=lower_limit+1;j
if(cond){for(first;loop;etc){function();}}}或者{for(second;loop;etc){function();}
您可能希望将循环的主体提取到函数中。或者,如果可能,将第二个循环更改为
for(int j=lower_limit+1;j)
for (int i = (dir == 1 ? 0 : 20);
     dir == 1 ? i < upper_limit :
                i > lower_limit;
     i += (dir == 1 ? 1 : -1))
{
    ...
}
if (dir == 1)
{
    for (int i = 0; i < upper_limit; i++)
    {
    }
}
else
{
    for (int i = 20; i > lower_limit; i--)
    {
    }
}