在某些应用程序中,我需要将嵌套循环合并为一个,同时保留单独的索引信息。
for j in N:
for i in M:
... A(i,j) ...
// Collapse the loops
for ij in MN:
... A(i,j) ...
所以已经研究了使用除法/模(昂贵的运算)和使用 if 语句(中断矢量化,分支预测问题)从 ij 恢复 i,j 的明显方法。最后我想出了以下内容(使用 C 风格的比较):
j += (i == m)
i *= (i != m)
++i, ++ij
是否有更好的方法来做到这一点?谢谢