2013-04-21 41 views
0

我將如何完成以下任務?Parallel std :: lists,根據列表B中的項目狀態刪除列表A中的項目?

列表A是一系列Foo S,列表B是一系列表示時間double小號剩餘直到Foo在列表A的第i位置被除去。也就是說,如果列表B中的雙精度值小於零,則列表A中的列表A中的相同位置上的Foo與列表B中的小於零雙精度的Foo將從列表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,如果我這樣做嗎?可悲的是,不同列表的迭代器不兼容,除了使用手動實現外,無法遍歷列表並知道每個值的索引。

+3

重構並使用單個'std :: list >'? (如果這是可能的話)保持同步的數據結構,比如你的兩個列表通常是頭疼的事情。 – syam 2013-04-21 06:12:10

回答

4

您可能想要考慮使用結構列表而不是兩個列表。然後你可以使用remove_if和其他列表功能。