将循环更改为阻止分区

时间:2014-07-24 15:25:00

标签: c++ loops for-loop

我想将for循环更改为块方案

我有这个for循环,这样做: 比方说n = 8 和node = 4

  

n:[1] [2] [3] [4] [5] [6] [7] [8]

     

id:0 1 2 3 0 1 2 3

id = 0;
while (id < node){
for (i = id + 1; i <= n; i = i + node)
     {
         //do stuff here
         id = i; 
     }enter code here
id+1;
}//end while

我想要它这样做:

n = 8 node = 4

  

n:[1] [2] [3] [4] [5] [6] [7] [8]

     

id:0 0 1 1 2 2 3 3

n = 16 node = 4

  

n:[1] [2] [3] [4] [5] [6] [7] [8] ...... [13] [14] [15] [16]

     

id:0 0 0 0 1 1 1 1 ... 3 3 3 3

n = 8 node = 2

  

n:[1] [2] [3] [4] [5] [6] [7] [8]

     

id:0 0 0 0 1 1 1 1

其中每个id分配给示例中的前n个节目

我有这个,但它只适用于特定场景n = 8&amp; node = 4

...
b = id + 1
for (i = n-(n-(id+b)); i <= (n-(n-(id+b))+1); i+= 1)
...

2 个答案:

答案 0 :(得分:0)

试试这段代码:

int node = 4;
int n = 16;
for (id = 0; id < node; id++) {
    for(int j = 0; j < n / node; j++) {
        //do some stuff
    }
}

或者您可以使用此代码:

int node = 4;
int n = 16;
for (int i = 0; i < node; i++) {
    id = i;
    for(int j = 0; j < n / node; j++) {
        //do some stuff
    }
}

他们也这样做。

答案 1 :(得分:0)

我可能误解了你的问题但是这给出了你所描述的id的输出:

    for (int i = 0; i < n; i++)
    {
        id = i / (n / node);
        // do stuff
    }

我从0开始使用n,但是如果从1开始,只需通过将所有内容设置为n-1来调整计算。