我如何完成以下任务?
列表A是一系列
Foo
s,列表B是一系列double
s,表示在列表A的Foo
位置i
之前剩余的时间已移除。也就是说,如果列表B中的双精度小于零,则列表A中相同位置的Foo
与列表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
我正在考虑列表B的std::remove_if
行,但如果我这样做,我将如何删除列表A的项目?遗憾的是,不同列表的迭代器不兼容,除了使用手动实现之外,没有办法迭代列表并知道每个值的索引。
答案 0 :(得分:4)
您可能需要考虑使用结构列表而不是两个列表。然后你可以使用remove_if和其他列表函数。