[英]std::map erase preserving iterators
我正在使用基本的二叉搜索树实现我自己的 std::map。
擦除方法应该是
使引用元素的迭代器无效并保留所有其他迭代器的有效性
然而,这就是 BST“经典”删除算法正在做的事情:
如果要删除的节点 A 有两个子节点,则将 A 替换为其按顺序的后继/前任 B 和删除 B。
最后,B 的迭代器无效。 所以“其他”迭代器的有效性不会被保留。
我发现的算法不合适吗?
我发现的算法不合适吗?
正确的。 您描述的算法不适合实现std::map
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.