繁体   English   中英

std::map 擦除保留迭代器

[英]std::map erase preserving iterators

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

擦除方法应该是

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

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

如果要删除的节点 A 有两个子节点,则将 A 替换为其按顺序的后继/前任 B 和删除 B。

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

我发现的算法不合适吗?

我发现的算法不合适吗?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM