标签: c++ stl iterator binary-search-tree
我正在使用基本的二叉搜索树实现我自己的 std::map。
擦除方法应该
使引用元素的迭代器无效并保留 所有其他迭代器的有效性
然而这里是 BST“经典”删除算法正在做的事情:
如果要删除的节点 A 有两个子节点,则用其有序的后继/前驱 B 和删除 B 来“替换”A。
最后,B 的迭代器失效。 所以“其他”迭代器的有效性不会被保留。
我发现的算法不合适吗?
答案 0 :(得分:1)
正确。您描述的算法不适合实现 std::map。
std::map