Код: Выделить всё
elements
У меня есть несколько предикатов P_1 , p_2 , p_3 , каждый принимает элемент и возвращает true или false . Для каждого предиката мне нужна сумма элементов, которые его удовлетворяют.auto sum_1 = 0;
auto sum_2 = 0;
auto sum_3 = 0;
for (const auto element : elements)
{
if (p_1(element)) sum_1 += element;
if (p_2(element)) sum_2 += element;
if (p_3(element)) sum_3 += element;
}
< /code>
Многие петли с одной операцией: < /li>
< /ol>
auto sum_1 = 0;
auto sum_2 = 0;
auto sum_3 = 0;
for (const auto element : elements)
{
if (p_1(element)) sum_1 += element;
}
for (const auto element : elements)
{
if (p_2(element)) sum_2 += element;
}
for (const auto element : elements)
{
if (p_3(element)) sum_3 += element;
}
< /code>
В этом случае первый подход кажется мне более естественным, но если операция более сложна, вторая версия может быть более читабельной. Скорость не очень критична, так что есть еще что -то, о чем нужно подумать?
Подробнее здесь: https://stackoverflow.com/questions/796 ... iple-loops