У меня есть цикл, который я хочу развернуть:
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
}
Но, может быть, есть лучшая практика