定期的にマージされるアイテム(グラフコンポーネントの構造)のstd::list
をビルドします。アイデアは、2つのコンポーネントを接続するノードが1つのコンポーネントになり、リストにコンポーネントが列挙されることを発見した場合です。各コンポーネントには、親コンポーネントへのハンドル(この場合はstd::list<component>::iterator
)があります。このコンポーネントは、マージされると設定されます。特定のノードが属するコンポーネントを決定するこの方法で、私はこのチェーンを歩きます。私が探しているものを最後に std :: listのアイテムを割り当てたままで削除します
N
のイテレータを取るために、そして
がリストからそれを割り当てを解除せずにを削除することができます
std::list
の操作です:リストの残りの構造正常に削除するのとまったく同じ方法で変更されます。
好ましくは、アイテムを再割り当てし、リストからコピーし、実際のremove
またはerase
を呼び出すよりも、あまり醜いものではありません。
おそらく私はsplice
とそれを達成することができます。私は "ジャンク"に削除する要素をスプライスする必要がありますlist
、私か?
_junkリストにスプライスする_右のように聞こえます... –
このような方法では、互換性のないアロケータを使用するとコピーが強制される可能性は低いです。まだ...いくつかの余分なポインタがシャッフルされています。まあ...孤立していない完全なノードを反復する方法はありません。 –
リストの代わりにリストを使用するのはなぜあなたに適していませんか? –