std::map 擦除保留迭代器

时间:2021-02-04 10:23:41

标签: c++ stl iterator binary-search-tree

我正在使用基本的二叉搜索树实现我自己的 std::map。

擦除方法应该

<块引用>

使引用元素的迭代器无效并保留 所有其他迭代器的有效性

然而这里是 BST“经典”删除算法正在做的事情:

如果要删除的节点 A 有两个子节点,则用其有序的后继/前驱 B 和删除 B 来“替换”A。

最后,B 的迭代器失效。 所以“其他”迭代器的有效性不会被保留。

我发现的算法不合适吗?

1 个答案:

答案 0 :(得分:1)

<块引用>

我发现的算法不合适吗?

正确。您描述的算法不适合实现 std::map

相关问题