[英]std::map erase preserving iterators
我正在使用基本的二叉搜索樹實現我自己的 std::map。
擦除方法應該是
使引用元素的迭代器無效並保留所有其他迭代器的有效性
然而,這就是 BST“經典”刪除算法正在做的事情:
如果要刪除的節點 A 有兩個子節點,則將 A 替換為其按順序的后繼/前任 B 和刪除 B。
最后,B 的迭代器無效。 所以“其他”迭代器的有效性不會被保留。
我發現的算法不合適嗎?
我發現的算法不合適嗎?
正確的。 您描述的算法不適合實現std::map
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.