Как бы я сделал следующее?
Список А представляет собой серию
Foo
s, список B представляет собой сериюdouble
s представляет время, оставшееся доFoo
наi
Позиция списка А удаляется. То есть, если двойное число в списке B меньше нуля,Foo
в той же позиции в списке A, что двойное число меньше нуля в списке B удаляется из списка A, а двойное число меньше нуля удаляется из списка B.
List A:
A B C D E
List B (in seconds):
1.0 0.33 0.0 5.0 0.01
//1 tick of 0.33 seconds
List B:
0.67 0.0 -0.33 4.67 -0.32
//Remove offending List A elements based on state of List B
List A:
A B D
//Remove invalid List B elements
List B:
0.67 0.0 4.67
Я думаю что-то вроде std::remove_if
для списка B, но как мне удалить элементы для списка A, если я это сделаю? К сожалению, итераторы разных списков несовместимы, и, кроме использования ручных реализаций, нет способа перебирать список и знать индекс каждого значения.
Вы можете рассмотреть возможность использования списка структур вместо двух списков. Затем вы можете использовать remove_if и другие функции списка.
Других решений пока нет …