S
Считай что тебе надо стереть часть динамического вектора. Ну, или динамического же списка. Если брать самый грубый вариант, количество строк то же что и у обычного цикла.
Size: a a a
S
М
М
S
М
D
S
S
S
A
S
S
A
S
A
template <typename T>
struct list {T val;
list *next;
}
// допустим, что в типе T есть функция bool remove_condition_is_true()
//
template<typename T>
void rm_elem_from_list(list<T> &l)
{list *tmp = &l;
list *last = &l;
while(tmp->next != 0) { if (tmp->val->remove_condition_is_true()) {last->next = tmp->next;
} else {last = tmp;
}
tmp = tmp->next;
}
S
М