并行std :: lists,根据列表B中的项目状态删除列表A中的项目?

时间:2013-04-21 06:08:17

标签: c++ stdlist

我如何完成以下任务?

  

列表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的项目?遗憾的是,不同列表的迭代器不兼容,除了使用手动实现之外,没有办法迭代列表并知道每个值的索引。

1 个答案:

答案 0 :(得分:4)

您可能需要考虑使用结构列表而不是两个列表。然后你可以使用remove_if和其他列表函数。