Я проверяю условие внутри цикла и, если оно выполняется, что-то предпринимаю.
for (i = 0; i < n; i++)
{
// do lots of work here
.
.
.
if (constant_condition)
do_something(n);
}
Условие не зависит от n
, поэтому необходимо каждый раз проверять его. Я мог бы вместо этого сделать это:
if (constant_condition)
for (i = 0; i < n; i++)
{
// do lots of work here
.
.
.
do_something(n);
}
else
for (i = 0; i < n; i++)
{
// do lots of work here
.
.
.
}
Этот новый код более эффективен, но мне пришлось скопировать и вставить тот же код в мою программу. Есть ли эффективный способ сделать это без повторения одного и того же блока кода?
Редактировать: условие не известно во время компиляции, но оно будет дано во время выполнения и не изменится.