将for循环更改为阻塞分区
changing for loop to block parition
我想改变for循环为块方案
我有这样一个for循环:假设n = 8And 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节点= 4
n: [1] [2] [3] [4] [5] [6] [7] [8]
id: 0 0 1 1 2 2 3 3
n = 16节点= 4
n:[1][2][3][4][5][6][7][8]…[13] [14] [15] [16]
id: 0 0 0 0 1 1 1…3 3 3 3
n = 8节点= 2
n: [1] [2] [3] [4] [5] [6] [7] [8]
id: 0 0 0 0 1 1 1 1
,其中每个id分配给top n,如示例
我有这个,但它只适用于特定的场景n= 8 &节点= 4
...
b = id + 1
for (i = n-(n-(id+b)); i <= (n-(n-(id+b))+1); i+= 1)
...
我可能误解了你的问题,但这给出了id的输出,如你所描述的:
for (int i = 0; i < n; i++)
{
id = i / (n / node);
// do stuff
}
我使用n从0开始,但如果您从1开始,只需通过将所有内容都设置为n-1来调整计算
试试下面的代码:
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
}
}
相关文章:
- "error: no matching function for call to"构造函数错误
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何在C++中从两个单独的for循环中添加两个数组
- 在Linux for Windows上编译C++代码时出错
- 调用专用模板时出错"no matching function for call to [...]"
- 为什么我的for循环不能正确获取argv
- 为什么我不能在 FOR LOOP 中使用 i/10,C++?
- Arduino:for/while/if在void setup()或void loop()之前?——错误:之前需要不合格
- 在基于范围的for循环中使用结构化绑定声明
- 通过for循环使用用户输入填充列表
- 使用for循环检查数组中的重复项
- 在for循环中使用auto vs decltype(vec.size())来处理字符串的向量
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 正在使用for循环创建QScatterSerie
- 是否有类似std::lower_bound的函数,而不需要排序/分区输入
- Python中的for循环与C++有何不同
- std::memory_order for std::atomic:<T>:wait
- 在更改for循环的第三部分后,未使用for循环结果
- 在 for 循环中查找问题时遇到困难
- 将for循环更改为阻塞分区