フェイルファストではない反復子を提供する赤黒木とリンク リストの実装を備えたライブラリを探しています。STL を使用して C++ で行っているのと同じ機能を持ちたいのですが、それは次のとおりです。
- ツリー/リストへの挿入はイテレータを無効にしません
- 削除は、削除される要素を指すイテレータのみを無効にします
- イテレータの「位置」を何らかの方法で保存し、それが指している値を参照することが可能です
この実装は、その一部を使用しながらリスト/ツリーを変更する機能を提供するため、優れています。ここではいくつかの例を示します。
- リンクされたリスト/赤黒ツリーの隣接要素をO(1)に格納された値に取得する
- 一括挿入/削除 (位置の増分ごとに 1 つの削除などの制約なし)
- イテレータの位置を介して O(1) でリンクされたリストを分割する
- イテレータの位置を保存している場合のより効率的な削除 (たとえば、イテレータをリンクされたリスト内の位置に保持することにより、削除は O(N) ではなく O(1) になります)
また、そのライブラリ/ソース コード/実装に Apache/GPL に適したライセンスがあり、かなり拡張可能であることも望んでいます (上の例のような操作を実装するために独自の変更を加えることができます)。
そのようなライブラリが存在しない場合、これらの 2 つのデータ構造を自分で実装するのに役立つ他のライブラリはありますか?