私は正常に動作している赤黒木アルゴリズムを持っています。ノードがツリーに挿入されると、insert() メソッドは、挿入されたノードへのポインターを呼び出し元に返します。そのようなすべてのポインターを STL ベクトルに格納します。
問題は、RB ツリーの操作内で、これらのポインターが無効になる場合があることです。たとえば、ノード A の値を現在のノードにコピーしてからノード A を削除する、rotateleft/right 中に呼び出されるメソッドがあります。そのベクトルにノード A へのポインターがありましたが、これは現在無効です。
次のようにベクター内のポインターを更新する方法を考えました。
1) ノード ポインタをそれらのポインタを保持するベクトル インデックスにマップするマルチマップを保持します。
2) ノードを削除する前に、このマルチマップをチェックして、影響を受けるベクトル内のすべてのスポットを見つけます
3) ベクトルを反復処理し、古いポインターを新しいポインターに変更します。
4) マルチマップのキー値を更新して、新しいポインタも反映させます。
問題は、明らかな理由でマップ コレクションのキー値を更新できないことです。また、これは複雑さと実装の両方の理由から、恐ろしい解決策のようです。このポインターの動的更新をどのように達成できるかについてのアイデアはありますか?