我有一个要展开的循环:
for(int i = 0; i < N; i++)
do_stuff_for(i);
展开:
for(int i = 0; i < N; i += CHUNK) {
do_stuff_for(i + 0);
do_stuff_for(i + 1);
...
do_stuff_for(i + CHUNK-1);
}
但是,我应该确保我不会用完原来的 N,比如当 N == 14 和 CHUNK == 10 时。我的问题是:什么是最好的/更快的/标准的/最优雅的(你说的它)怎么做?
一个解决方案是:
int i;
for(i = 0; i < (N % CHUNK); i++)
do_stuff_for(i);
for(i; i < N; i += CHUNK) {
// unfolded, for the rest
}
但也许有更好的做法
最佳答案
你可以使用 switch-case。
它叫做 Duff's Device
关于C++循环展开,边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8136184/