在循环中遍历负数和正数

Traversing negative, positive numbers in a loop

本文关键字:遍历 循环      更新时间:2023-10-16

我想用c++调用一个函数。

 check(T);  

check(T);  
check(T-1);
check(T+1);
check(T-2);
check(T+2);

我想在一个循环中做,因为将来组合可能会增加。

check(T);
for(int i=1; i<N; i++)
{
    check(T-i);
    check(T+i);
}

是你想要的吗?

下面是一个示范程序,它展示了一种方法

#include <iostream>
int main()
{
    const int N = 10;
    for ( int i = 0, j = 0; i < N; i += j ^= 1 )
    {
        std::cout << ( j == 0 ? i : -i ) << std::endl; 
    }
}    

程序输出为

0
-1
1
-2
2
-3
3
-4
4
-5
5
-6
6
-7
7
-8
8
-9
9

如果要测试的组合可以用(索引)序列来描述,则可以在函数中实现它。对于上面的示例,这将是:

int sequence(int i) 
{
if(i % 2 != 0)
     return i - (i/2);
else
     return -(i-(i/2));
}
check(T)
for(int i=1; i<4; i++)
{
    check(T-sequence(i));
}

如果它们不是一个简单的可定义的顺序,你可以将所有的组合保存在一个数据结构中(例如一个向量),然后在for循环中遍历它。