Я хотел бы переписать код лучше, используя функциональное программирование, но я не настолько эксперт.Подсчет выживаемости для выбора с функциональным программированием
У меня есть коллекция указатель к элементам:
std::vector<Item*>* collection;
Мне нужно применить выбор к элементам. Выбор осуществляется в несколько этапов, каждый закодированный внутри функции:
bool pass_step0(const Item& item);
Для каждого шага мне нужно знать, сколько элементов выжить выбор. Один элемент выдержать выбор, если проходит and
всех этапов. Так это то, что я делаю
std::vector<int> nsurvivals_after_step;
std::vector<bool> mask(collection->size(), true);
int i = 0;
for (item : *collection) {
if (not(pass_step0(*item)) { mask[i] = false; }
++i;
}
nsurvivals.append(count(mask.begin(), mask.end(), true));
i = 0;
for (item : *collection) {
if (not(pass_step1(*item)) { mask[i] = false; }
++i;
}
nsurvivals.append(count(mask.begin(), mask.end(), true));
Есть много повторений в коде, и я должен использовать глобальный индекс i
. Как использовать более сложную функцию C++ для ее улучшения?
Я не вижу нигде в коде ' & = '. Какова ваша фактическая цель, чего вы пытаетесь выполнить с помощью '& =' или кода, который вы предоставили? –