我有一个运行良好的红黑树算法。当一个节点被插入到树中时, insert() 方法向调用者返回一个指向被插入节点的指针。我将所有此类指针存储在 STL 向量中。
问题是,在RB树的操作中,有时这些指针是无效的。例如,有一个在左/右旋转期间调用的方法,它将节点 A 的值复制到当前节点,然后删除节点 A。好吧,我在那个向量中有一个指向节点 A 的指针,现在它是无效的。
我考虑过一种方法来更新向量中的指针,如下所示,
1)保留一个multimap,它将节点指针映射到保存这些指针的向量索引。
2)在删除一个节点之前,检查这个多图来找到向量中所有会受到影响的点
3)遍历向量并将旧指针更改为新指针
4) 更新多重映射中的键值以反映新指针。
问题是,由于显而易见的原因,您无法更新地图集合的键值。此外,出于复杂性和实施原因,这似乎是一个可怕的解决方案。关于如何完成指针的这种动态更新的任何想法?