В последнее время много раз упражнения на C++ требовали от меня выполнения операций, зависящих от отношений между элементами в векторе. Например, выполнить x только в том случае, если следующий элемент в векторе больше предыдущего, а в противном случае выполнить y.
Я часто решаю такие задачи. проблемы с общей структурой кода:
Код: Выделить всё
void foo()
{
std::vector v;
for (size_t i = 0; i < v.size(); ++i)
{
if (i < v.size() - 1)
{
if (v[i + 1] > v[i]) // some sort of condition
{
// execute compound statement x
}
else
{
// execute compound statement y
}
}
else
{
// execute compound statement y
}
}
}
Но часто становится сложно читать, когда составные операторы x и y становятся большими. Частично потому, что мне часто приходится создавать функцию, содержащую составной оператор y, чтобы избежать необходимости дважды копировать весь ее код.
Какова более читабельная альтернатива этой структуре?
Подробнее здесь:
https://stackoverflow.com/questions/785 ... -structure