1

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

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

一种是:

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

另一个是:

for (int j = upper_limit; j > lower_limit; j--) {

我有一个整数 tb,它表示我想使用哪一个(它的值分别为 1 或 2)。

我想知道如何才能最好地做到这一点。这是宏的好用例吗?

4

3 回答 3

7

不要包装for,只需将内容包装在一个函数中:

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

for (int j = upper_limit; j > lower_limit; j--) {
   process(j);
}
于 2013-05-02T11:32:02.563 回答
6

不,听起来根本不是宏的好案例。

最好的(大多数 C++ 风格)可能是使用range,并将其传递给函数。

于 2013-05-02T11:31:08.393 回答
1

如果您的变量,如您所说,1用于一个方向和2另一个方向,您可以使用三元运算符?:

for (int i = (dir == 1 ? 0 : 20);
     dir == 1 ? i < upper_limit :
                i > lower_limit;
     i += (dir == 1 ? 1 : -1))
{
    ...
}

if但是,如果您只使用一个简单的语句,它可能更具可读性:

if (dir == 1)
{
    for (int i = 0; i < upper_limit; i++)
    {
    }
}
else
{
    for (int i = 20; i > lower_limit; i--)
    {
    }
}

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

于 2013-05-02T11:32:25.580 回答