0

次のことをどのように達成しますか?

リスト A は一連の ですFoo。リスト B は、リスト Aの番目の位置にある が削除されるdoubleまでの残り時間を表す一連の です。つまり、リスト B の double がゼロ未満の場合、リスト A でリスト B のゼロ未満の double と同じ位置にあるものはリスト A から削除され、ゼロ未満の double はリスト B から削除されます。 .FooiFoo

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 のアイテムを削除するにはどうすればよいですか? 悲しいことに、異なるリストの反復子には互換性がなく、手動で実装する以外に、リストを反復処理して各値のインデックスを知る方法はありません。

4

1 に答える 1

4

2 つのリストではなく、構造のリストを使用することを検討してください。その後、remove_if およびその他のリスト関数を使用できます。

于 2013-04-21T06:13:01.193 に答える